我想阅读linux命令编写的实际源代码。我已经获得了使用它们的一些经验,现在我认为是时候在更深层次上与我的机器进行交互了。
我在http://directory.fsf.org/wiki/GNU找到了一些命令。不幸的是,我无法找到像'ls'这样的基本命令,这在我看来很容易开始。
我究竟如何阅读像'ls'这样的简单shell命令的源代码? 我在Ubuntu 12.04上运行
答案 0 :(得分:155)
所有这些基本命令都是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
答案 1 :(得分:110)
直接链接到coreutils
中某些热门程序的来源:
答案 2 :(得分:6)
ls
是coreutils的一部分。你可以用git获取它:
git clone git://git.sv.gnu.org/coreutils
您会在this page上找到与其他软件包一起列出的coreutils(滚动到底部)。
答案 3 :(得分:5)
http://suckless.org看看他们的sbase
存储库实际上提供了更合理的资源:
git clone git://git.suckless.org/sbase
他们更清晰,更聪明,更简单,更无耻,例如ls.c
只有369 LOC
之后,更容易理解更复杂的GNU代码。
答案 4 :(得分:1)
其他帖子中提及的CoreUtils并未显示我认为您寻求的大多数功能的真实实现。在大多数情况下,它为检索数据的实际函数提供前端,可在此处找到:
中的实际源代码构建答案 5 :(得分:1)
您可以使用命令在github上安装它
git clone https://github.com/coreutils/coreutils.git
您可以在src文件夹中找到所有源代码。
您需要安装git。
自2012年以来情况发生了变化,ls
源代码现在有5309行
答案 6 :(得分:0)
BSD 发行版实际上是一种阅读源代码的好方法,通过使用它们的存储库,因为它们都打包到一个地方,您可以查看源代码在历史上是如何演变或变化的。那么为什么不使用 BSD repos ,例如 NetBSD 或 OpenBSD 来完成这项任务。
答案 7 :(得分:-1)
cd ~ && apt-get source coreutils && ls -d coreutils*
您应该可以在ubuntu上使用这样的命令来收集包的来源,假设您下载到您拥有的位置,可以省略sudo
。