我想阅读编写 linux 命令的实际源代码。我已经获得了一些使用它们的经验,现在我认为是时候与我的机器进行更深层次的交互了。
我在这里找到了一些命令http://directory.fsf.org/wiki/GNU。不幸的是,我无法找到诸如“ls”之类的基本命令,这对我来说似乎很容易开始。
我究竟如何阅读像'ls'这样的简单shell命令的源代码?我在 Ubuntu 12.04 上运行
我想阅读编写 linux 命令的实际源代码。我已经获得了一些使用它们的经验,现在我认为是时候与我的机器进行更深层次的交互了。
我在这里找到了一些命令http://directory.fsf.org/wiki/GNU。不幸的是,我无法找到诸如“ls”之类的基本命令,这对我来说似乎很容易开始。
我究竟如何阅读像'ls'这样的简单shell命令的源代码?我在 Ubuntu 12.04 上运行
所有这些基本命令都是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
直接链接到一些流行程序的源代码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 行)ls
是 coreutils 的一部分。你可以用 git 得到它:
git clone git://git.sv.gnu.org/coreutils
您会在此页面上找到与其他软件包一起列出的 coreutils(滚动到底部)。
实际上, http : //suckless.org 提供了更健全的资源,请查看他们的sbase
存储库:
git clone git://git.suckless.org/sbase
它们更清晰、更智能、更简单、更简单,例如ls.c
只有 369 LOC
之后会更容易理解更复杂的 GNU 代码。
其他帖子中提到的 CoreUtils 并未显示我认为您寻求的大多数功能的实际实现。在大多数情况下,它为检索数据的实际函数提供前端,可以在这里找到:
它建立在Gnulib 之上,实际源代码位于lib-subdirectory
您可以使用以下命令在 github 上拥有它
git clone https://github.com/coreutils/coreutils.git
您可以在 src 文件夹中找到所有源代码。
你需要安装git。
自 2012 年以来情况发生了变化,ls
源代码现在有 5309 行
cd ~ && apt-get source coreutils && ls -d coreutils*
您应该能够在 ubuntu 上使用这样的命令来收集包的源代码,您可以省略sudo
假设您下载到您拥有的位置。