如何读取 shell 命令的源代码?

我想读一下用来编写 linux 命令的实际源代码。我已经获得了一些使用它们的经验,现在我认为是时候与我的机器进行更深层次的交互了。

我在这里找到了一些指令 http://directory.fsf.org/wiki/GNU。不幸的是,我无法找到像“ ls”这样的基本命令,在我看来,这些命令很容易开始。

如何准确地读取简单 shell 命令(如“ ls”)的源代码? 我用的是 Ubuntu 12.04

134377 次浏览

ls是 coreutils 的一部分,你可以通过 git 得到它:

git clone git://git.sv.gnu.org/coreutils

您将在 这一页上找到与其他包一起列出的 coreutils (滚动到底部)。

所有这些基本命令都是 coreutils包的一部分。

你可以在这里找到所有你需要的信息:

Http://www.gnu.org/software/coreutils/

如果你想下载最新的源代码,你应该使用 git:

git clone git://git.sv.gnu.org/coreutils

要在 Ubuntu 机器上安装 git,应该使用 apt-get (git 不包含在标准 Ubuntu 安装中) :

sudo apt-get install git

说实话,在这里你可以找到 ls命令的具体来源:

Http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/ls.c

只有4984个代码行的命令“简单足够”作为 ls... 你还有兴趣阅读吗? ?祝你好运!校对: D

    cd ~ && apt-get source coreutils && ls -d coreutils*

你应该能够在 ubuntu 上使用这样的命令来收集软件包的源代码,你可以省略 sudo,假设你的下载到了你自己的位置。

直接链接到源代码的一些流行的节目在 coreutils:

完整的清单在这里。

实际上,http://suckless.org提供了更多明智的资源,看看它们的 sbase存储库:

git clone git://git.suckless.org/sbase

他们更清楚,更聪明,更简单,没有吸吮,例如 ls.c只有369 LOC

之后,它将更容易理解更复杂的 GNU 代码。

在其他文章中提到的 CoreUtils 并没有显示大多数功能的真正实现,我认为你在寻找这些功能。在大多数情况下,它为检索数据的实际函数提供前端,可以在这里找到:

它使用 Lib-子目录中的实际源代码构建在 Gnulib之上

您可以使用下面的命令将它放在 github 上

git clone https://github.com/coreutils/coreutils.git

您可以在 src 文件夹中找到所有源代码。

您需要安装 饭桶

事情自2012年以来发生了变化,ls源代码现在有5309行

BSD 发行版实际上是一种很好的阅读源代码的方式,通过使用它们的存储库,因为它们都被打包在一个地方,您可以查看源代码在历史上是如何演变或变化的。因此,为什么不使用 BSD 回购,如 NetBSDOpenBSD为这项任务。