我如何阅读shell命令的源代码?

时间:2012-07-17 18:03:09

标签: linux command gnu-coreutils

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

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

我究竟如何阅读像'ls'这样的简单shell命令的源代码? 我在Ubuntu 12.04上运行

8 个答案:

答案 0 :(得分:155)

所有这些基本命令都是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

答案 1 :(得分:110)

直接链接到coreutils中某些热门程序的来源:

Full list here.

答案 2 :(得分:6)

ls是coreutils的一部分。你可以用git获取它:

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

您会在this page上找到与其他软件包一起列出的coreutils(滚动到底部)。

答案 3 :(得分:5)

http://suckless.org看看他们的sbase存储库实际上提供了更合理的资源:

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

他们更清晰,更聪明,更简单,更无耻,例如ls.c只有369 LOC

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

答案 4 :(得分:1)

其他帖子中提及的CoreUtils并未显示我认为您寻求的大多数功能的真实实现。在大多数情况下,它为检索数据的实际函数提供前端,可在此处找到:

它基于Gnuliblib-subdirectory

中的实际源代码构建

答案 5 :(得分:1)

您可以使用命令在github上安装它

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

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

  

您需要安装git

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

答案 6 :(得分:0)

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

答案 7 :(得分:-1)

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

您应该可以在ubuntu上使用这样的命令来收集包的来源,假设您下载到您拥有的位置,可以省略sudo