用linux一段时间了,有时候想看看ls、cat、more等命令的源代码,在下载的内核源码中用cscope没能找到,在网上搜索了一下,将方 法总结如下:
以搜索ls命令源码为例,先搜索命令所在包,命令如下:[java] view plain copylpj@lpj-linux:~$ which ls /bin/ls 用命令搜索该软件所在包,代码如下:[Java] view plain copylpj@lpj-linux:~$ dpkg -S /bin/ls coreutils: /bin/ls 从上一步中可以知道ls命令的实现在包coreutils中,用apt安装(说安装有些歧义,主要是区分apt-get -d)该包的源代码然后解压,代码如下:[Java] view plain copysudo apt-get source coreutils cd /usr/src/coreutils-XXX #XXX表示版本号 sudo tar zxvf coreutils-XXX.tar.gz 或者只下载源码,然后手动打补丁再解压,代码如下:[Java] view plain copysudo apt-get -d source coreutils cd /usr/src tar zxvf coreutils-XXX.tar.gz gzip -d coreutils-XXX.diff.gz #这一步会生成coreutils-XXX.diff文件 patch -p0 < coreutils-XXX.diff cd coreutils-XXX tar zxvf coreutils-XXX.tar.gzOK,这几步执行完后,就可以进入/usr/src/coreutils-XXX/coreutils-XXX/src中查看各命令对应的源代码了
另外:一些常用的命令,例如basename cat chgrp chmod chown chroot cksum comm cp csplit cut date dd df dirname du echo env expand exPR factor false fmt fold groups head hostid hostname id install join kill link ln logname ls md5sum mkdir mkfifo mknod mv nice nl nohup od paste pathchk pinky pr printenv pwd readlink rm rmdir seq sha1sum sleep sort split stty su sum sync tac tail tee test touchtr true tsort tty uname unexpand uniq unlink uptime users wc who whoami yes 都包含在 coreutils 软件包中,coreutils 软件包的源码可以在http://ftp.gnu.org/gnu/coreutils/下载到。另外,还有一部分命令是 bash 内置的,例如 cd 等,可以在 bash 的源码中找到。http://ftp.gnu.org/gnu/bash/
新闻热点
疑难解答