我想读一下用来编写 linux 命令的实际源代码。我已经获得了一些使用它们的经验,现在我认为是时候与我的机器进行更深层次的交互了。
我在这里找到了一些指令 http://directory.fsf.org/wiki/GNU。不幸的是,我无法找到像“ ls”这样的基本命令,在我看来,这些命令很容易开始。
如何准确地读取简单 shell 命令(如“ ls”)的源代码? 我用的是 Ubuntu 12.04
ls是 coreutils 的一部分,你可以通过 git 得到它:
ls
git clone git://git.sv.gnu.org/coreutils
您将在 这一页上找到与其他包一起列出的 coreutils (滚动到底部)。
所有这些基本命令都是 coreutils包的一部分。
coreutils
你可以在这里找到所有你需要的信息:
Http://www.gnu.org/software/coreutils/
如果你想下载最新的源代码,你应该使用 git:
要在 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
cd ~ && apt-get source coreutils && ls -d coreutils*
你应该能够在 ubuntu 上使用这样的命令来收集软件包的源代码,你可以省略 sudo,假设你的下载到了你自己的位置。
sudo
直接链接到源代码的一些流行的节目在 coreutils:
cat
chmod
cp
cut
date
df
du
echo
head
hostname
kill
ln
md5sum
mkdir
mv
nice
pwd
rm
rmdir
shred
tail
tee
touch
wc
whoami
完整的清单在这里。
实际上,http://suckless.org提供了更多明智的资源,看看它们的 sbase存储库:
sbase
git clone git://git.suckless.org/sbase
他们更清楚,更聪明,更简单,没有吸吮,例如 ls.c只有369 LOC
ls.c
之后,它将更容易理解更复杂的 GNU 代码。
在其他文章中提到的 CoreUtils 并没有显示大多数功能的真正实现,我认为你在寻找这些功能。在大多数情况下,它为检索数据的实际函数提供前端,可以在这里找到:
它使用 Lib-子目录中的实际源代码构建在 Gnulib之上
您可以使用下面的命令将它放在 github 上
git clone https://github.com/coreutils/coreutils.git
您可以在 src 文件夹中找到所有源代码。
您需要安装 饭桶。
事情自2012年以来发生了变化,ls源代码现在有5309行
BSD 发行版实际上是一种很好的阅读源代码的方式,通过使用它们的存储库,因为它们都被打包在一个地方,您可以查看源代码在历史上是如何演变或变化的。因此,为什么不使用 BSD 回购,如 NetBSD或 OpenBSD为这项任务。