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

Lui*_*rzi 145 linux command gnu-coreutils

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

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

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

Zag*_*rax 161

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

  • 试试[cat`的来源](http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/cat.c).它只有767行. (21认同)
  • `只有4984个代码行...` - 似乎在4年零3个月里`ls`变得又变得复杂了57行. (3认同)
  • 我的天啊!我觉得这样容易一点......路径比预期的更长更难:-) (2认同)
  • 我记得有一次我试图理解为什么`wc`比同等的Java程序快得多.所以我查看了代码...... OMG是针对磁盘读取,缓冲输入等优化的,或者是什么:) (2认同)

Dre*_*kes 121

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

完整列表在这里.

  • 感谢您列出的行数.:) (4认同)

Den*_*ret 6

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

git clone git://git.sv.gnu.org/coreutils
Run Code Online (Sandbox Code Playgroud)

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


小智 5

实际上,httpsbase://suckless.org提供了更多合理的资源,查看它们的存储库:

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

它们更清晰,更智能,更简单,更轻松,例如ls.c只有369 LOC

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