您的位置:首页 > 运维架构 > Linux

如何查看linux命令源代码

2017-02-08 20:35 381 查看
Linux一段时间了,有时候想看看ls、cat、more等命令的源代码,在下载的内核源码中用cscope没能找到,在网上搜索了一下,将方 法总结如下:
以搜索ls命令源码为例,先搜索命令所在包,命令如下:

[Java] view
plain copy

lpj@lpj-linux:~$ which ls  

/bin/ls  

用命令搜索该软件所在包,代码如下:

[Java] view
plain copy

lpj@lpj-linux:~$ dpkg -S /bin/ls  

coreutils: /bin/ls  

从上一步中可以知道ls命令的实现在包coreutils中,用apt安装(说安装有些歧义,主要是区分apt-get -d)该包的源代码然后解压,代码如下:

[Java] view
plain copy

sudo apt-get source coreutils  

cd /usr/src/coreutils-XXX #XXX表示版本号  

sudo tar zxvf coreutils-XXX.tar.gz  

或者只下载源码,然后手动打补丁再解压,代码如下:

[Java] view
plain copy

sudo 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.gz  

OK,这几步执行完后,就可以进入/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 touch

tr 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/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: