1、Ubuntu中系统命令源代码的获取方法


以32位Ubuntu14.04下,获取ls命令的源代码为例,可以使用如下的方法下载源代码:


1)使用which命令查看ls命令的位置,如下:


which ls # 输出:/bin/ls



2)使用dpkg命令查询ls命令所属的包,如下:


dpkg -S /bin/ls # 输出:coreutils: /bin/ls



3)使用apt-get命令来下载ls命令所在的包的源代码,如下:


apt-get source coreutils



注:


1)在使用dpkg时,若出现错误,可以使用sudo命令使其以root权限执行。


2)使用apt-get source下载的源代码保存到当前目录下。。此外,当我们知道了命令所属的包后,也可以到相应的官方网站下载。




作者:jiemingwei

通常命令所在的包里面都有源代码。
那么定位命令所在的包,搜索包的名字下载就行了。

如果是Ubuntu/Debian,用dpkg命令找对应的包:
$ dpkg -S $(which sort)
coreutils: /usr/bin/sort
$ dpkg -S $(which egrep)
grep: /bin/egrep

大部分常用命令都包含在GNU的Coreutils中,Debian/Ubuntu中这些命令用的就是Coreutils的。
http://en.wikipedia.org/wiki/GNU_Core_Utilities
Coreutils的代码:
http://www.gnu.org/software/coreutils/

OpenBSD中的命令代码可读性更好一些:
http://www.openbsd.org/cgi-bin/cvsweb/src/
命令在bin/, sbin/, usr.bin/, usr.sbin/这几个目录里

Unix早期版本里的命令代码也值得一看:
http://minnie.tuhs.org/cgi-bin/utree.pl
这里是v7的命令代码:
http://minnie.tuhs.org/cgi-bin/utree.pl?file=V7/usr/src/cmd

书籍的话可以看看
Software Tools, Brian W. Kernighan and P. J. Plauger
Software Tools in Pascal, Brian W. Kernighan and P. J. Plauger
Understanding UNIX/LINUX Programming: A Guide to Theory and Practice, Bruce Molay

Software Tools讲了sort, uniq, comm, grep, vi等一些命令的实现。
Software Tools in Pascal内容和前一本相同,只是用Pascal语言实现的,前一本用的是Ratfar语言。
关于Software Tools可以看看徐宥同学的书评: 编程珠玑番外篇-5.比代码大全好的两本书A « 4G spaces