我想阅读编写 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假设您下载到您拥有的位置。