我想阅读使用linux命令编写的实际源代码。我已经获得了使用它们的一些经验,现在我认为是时候与我的机器进行更深层次的互动了。
我在http://directory.fsf.org/wiki/GNU中找到了一些命令。不幸的是,我找不到基本的命令,例如“ ls”,在我看来这很容易上手。
我如何准确地读取像“ ls”这样的简单shell命令的源代码?我在Ubuntu 12.04上运行
ls
不是Linux的一部分,而是Gnu的一部分。Gnu在Linux和其他内核上运行。
我想阅读使用linux命令编写的实际源代码。我已经获得了使用它们的一些经验,现在我认为是时候与我的机器进行更深层次的互动了。
我在http://directory.fsf.org/wiki/GNU中找到了一些命令。不幸的是,我找不到基本的命令,例如“ ls”,在我看来这很容易上手。
我如何准确地读取像“ ls”这样的简单shell命令的源代码?我在Ubuntu 12.04上运行
ls
不是Linux的一部分,而是Gnu的一部分。Gnu在Linux和其他内核上运行。
Answers:
所有这些基本命令都是coreutils
软件包的一部分。
您可以在这里找到所需的所有信息:
http://www.gnu.org/software/coreutils/
如果要下载最新的源代码,则应使用git:
git clone git://git.sv.gnu.org/coreutils
要在您的Ubuntu计算机上安装git,您应该使用apt-get(标准Ubuntu安装中不包含git):
sudo apt-get install git
说实话,在这里您可以找到ls
命令的特定来源:
http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/ls.c
命令“足够简单”的代码行只有4984行,因为ls
...您仍然对阅读它感兴趣吗?祝好运!:D
cat
。只有767行。
Only 4984 code lines ...
-似乎在4年3个月中ls
又变得更加复杂了57行。
wc
它比等效的Java程序快得多。所以,我看着代码... OMG是它优化了磁盘读取,缓存输入等或什么:)
指向以下一些流行程序的源的直接链接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线)su
吗