用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/
|
新聞熱點
疑難解答