我如何读取shell命令的源代码?(How do I read the source code of

2019-06-26 08:19发布

我想读其中的Linux命令写入与实际的源代码。 我已经使用它们积累了一些经验,现在我觉得是时候在更深的层次与我的机器进行交互。

我在这里找到了一些命令http://directory.fsf.org/wiki/GNU 。 遗憾的是我没能找到诸如“LS”,这在我看来很容易的开始基本命令。

究竟如何阅读,如“ls”的简单shell命令的源代码? 我在Ubuntu 12.04上运行

Answer 1:

所有这些基本的命令是一部分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



Answer 2:

直接链接到源在一些热门项目coreutils

  • cat (767线)
  • chmod (570线)
  • cp (2912线)
  • cut (831线)
  • date (570线)
  • df (1718线)
  • du (1112线)
  • echo (272线)
  • head (1070线)
  • hostname (116线)
  • kill (312线)
  • ln (651线)
  • ls (4954线)
  • md5sum (878线)
  • mkdir (306线)
  • mv (512线)
  • nice (220线)
  • pwd (394线)
  • rm (356线)
  • rmdir (252线)
  • shred (1325线)
  • tail (2301线)
  • tee (220线)
  • touch (437线)
  • wc (801线)
  • whoami (91线)

这里完整列表。



Answer 3:

ls是的coreutils的一部分。 你可以用git得到它:

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

你会发现与其他包(滚动到底部)中列出的coreutils 这个页面 。



Answer 4:

其实更理智源提供http://suckless.org看看他们sbase库:

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

他们是更清晰,更智能,更简单,suckless,如ls.c刚刚369 LOC

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



Answer 5:

在其他帖子提到的coreutils没有显示真正落实其中大部分我认为你所寻求的功能。 在大多数情况下,它提供了用于检索数据,这可以在这里找到实际的功能前端:

这是在建立Gnulib用在实际的源代码LIB-子目录



Answer 6:

您可以使用下面的命令有它在github

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

你可以在src文件夹中的所有源代码。

你需要有git的安装。

2012年以来时过境迁, ls的源代码现在已经5309线



Answer 7:

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

您应该能够使用这样的命令在Ubuntu收集一个包的来源,则可以省略sudo假设你下载到你自己的位置。



文章来源: How do I read the source code of shell commands?