我看到这个问题可能看起来很广泛,但实际上它非常具体,应该有一个具体的答案。
在过去的几年里,我发现了很多招聘帖子,其中列出了“linux”作为必备技能。根据我作为开发人员的经验,我主要使用的是Windows操作系统,而且我知道我使用的一些C ++代码是特定于Windows操作系统的,我假设很多shell命令也特定于Windows。
所以我想知道的是:当有人说你应该'知道'Linux时,他们到底指的是什么,或者换句话说,我应该知道哪些关于Linux的东西能够称之为技能?< / p>
答案 0 :(得分:1)
Linux是* NIX系列操作系统的一部分。如果Linux是一项工作需求,那么这可能意味着您的雇主使用* NIX操作系统,因此希望您熟悉Linux和类似操作系统的工作方式。
您需要知道的最重要的事情是如何不使用gui,而是使用基于文本的控制台。
答案 1 :(得分:1)
这确实意味着你应该至少知道基本的GNU / Linux命令,并至少清楚地了解事情是如何工作的(即什么是内核,什么是X服务器/客户端,什么是窗口管理器,什么是文件权限,用户,团体)。实际上它很容易学习,只是尝试从源代码安装一些Linux发行版。例如。 Gentoo。它会教你如何在那里发挥作用。
此外,由于您正在寻找开发人员的工作,您应该有一点点
GNU / Linux的编码经验。我记得当你来自Windows®时可能会有什么问题,它是fork()
函数,并且缺少用wchar
来解决的问题 - 因为UTF8中存在所有内容。同样在GNU / Linux中你可能会发现类似离线MSDN的东西 - 所谓的手册。如果您安装了一些开发人员 man 软件包,您可能会发现许多系统和C特定函数的脱机描述。
更多提示:α)/proc/
文件系统。您可能会发现这些目录实际上是正在运行的进程的PID。您可能会发现许多有用的信息。例如。 /proc/somePID/exe
是指向正在运行的进程的可执行文件的符号链接。 β)几乎每个GNU / Linux发行版都包含许多对编程有用的工具。 gcc
(编译器),nm
(列出目标文件中的符号),md5sum
,hexdump
,{{ 1}} (调试器),gdb
。 γ)一切都是文件。这确实意味着,例如如果你想创建一个usbstick的图像,你甚至不需要一个特定的工具,你可能只是在objdump
目录中找到它的文件,并使用/dev/
实用程序,它只是复制一个文件内容,将其写入文件。 δ)您安装的所有内容都可以从终端启动,也就是说,您不需要寻找可执行文件。一个可执行文件,通常安装在dd
的某个地方,但无论如何,它总是在你的$ PATH变量中。
答案 2 :(得分:1)
你应该知道
我建议不要安装像gentoo这样的东西进入linux。这是非常不相关的,你必须处理很多特定于发行版的陷阱(我是一个gentoo dev)。
使用常用的东西,比如OpenSUSE或Debian来学习。