我想阅读使用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吗