我想阅读实际的源代码,其中linux命令是写的。我已经获得了一些使用它们的经验,现在我认为是时候与我的机器进行更深层次的交互了。
我在这里找到了一些命令http://directory.fsf.org/wiki/GNU。不幸的是,我找不到基本的命令,比如'ls',这在我看来很容易开始。
我到底如何读取简单shell命令的源代码,比如'ls'?Ubuntu 12.04
我想阅读实际的源代码,其中linux命令是写的。我已经获得了一些使用它们的经验,现在我认为是时候与我的机器进行更深层次的交互了。
我在这里找到了一些命令http://directory.fsf.org/wiki/GNU。不幸的是,我找不到基本的命令,比如'ls',这在我看来很容易开始。
我到底如何读取简单shell命令的源代码,比如'ls'?Ubuntu 12.04
8条答案
按热度按时间dhxwm5r41#
所有这些基本命令都是
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个kq0g1dla2#
直接链接到
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行)Full list here.
7nbnzgx93#
实际上,http://suckless.org提供了更多合理的源代码,请查看他们的
sbase
存储库:git clone git://git.suckless.org/sbase
个它们更清晰,更智能,更简单,更简单,例如
ls.c
只有369 LOC -http://git.suckless.org/sbase/file/ls.c.html的
在那之后,理解更复杂的GNU代码会更容易。
bn31dyow4#
ls
是coreutils的一部分。你可以使用git:字符串
您会发现coreutils与this page上的其他软件包(滚动到底部)一起列出。
wmvff8tz5#
在其他帖子中提到的CoreUtils并没有显示出我认为你所寻求的大多数功能的真实的实现。在大多数情况下,它为检索数据的实际函数提供前端,可以在这里找到:
它构建在Gnulib之上,实际源代码位于lib-subdirectory中。
iyzzxitl6#
你可以在github上使用命令
字符串
您可以在src文件夹中找到所有源代码。
您需要安装git。
自2012年以来,情况发生了变化,
ls
源代码现在有5309行relj7zay7#
BSD发行版实际上是一种阅读源代码的好方法,通过使用它们的存储库,因为它都打包在一个地方,你可以查看源代码的历史演变或变化。那么为什么不使用BSD仓库,比如NetBSD或OpenBSD来完成这个任务呢?
00jrzges8#
字符串
你应该可以在ubuntu上使用这样的命令来收集一个包的源代码,你可以省略
sudo
,假设你下载到你自己的位置。