查看linux命令源代码的⽅法
⽤linux⼀段时间了,有时候想看看ls、cat、more等命令的源代码,在下载的内核源码中⽤cscope没能到,在⽹上搜索了⼀下,将⽅法总结如下:查看源代码主要有两种⽅式:
基于debian的:
1. 以搜索ls命令源码为例,先搜索命令所在包,命令如下:
lpj@lpj-linux:~$ which ls
/bin/ls
2. ⽤命令搜索该软件所在包,代码如下:
lpj@lpj-linux:~$ dpkg -S /bin/ls
coreutils: /bin/ls
3. 从上⼀步中可以知道ls命令的实现在包coreutils中,⽤apt安装(说安装有些歧义,主要是区分apt-get -d)该包的源代码然后解压,代码如下:
linux查看目录命令
sudo apt-get source coreutils
cd /usr/src/coreutils-XXX #XXX表⽰版本号
sudo tar zxvf
或者只下载源码,然后⼿动打补丁再解压,代码如下:
sudo apt-get -d source coreutils
cd /usr/src
tar zxvf
gzip -d #这⼀步会⽣成coreutils-XXX.diff⽂件
patch -p0 < coreutils-XXX.diff
cd coreutils-XXX
tar zxvf
OK,这⼏步执⾏完后,就可以进⼊/usr/src/coreutils-XXX/coreutils-XXX/src中查看各命令对应的源代码了
基于redhat的
  下⾯以获取cat命令的源代码为例说明:
  rpm -qif `which cat`  将显⽰如下信息:
  --------------------------------------------------------------------------
  Name        : coreutils                    Relocations: (not relocatable)
  Version    : 5.2.1                            Vendor: Red Hat, Inc.
  Release    : 31.8.el4_7.1                  Build Date: 2008年10⽉23⽇星期四 21时04分08秒
  Install Date: 2009年04⽉07⽇星期⼆ 10时17分33秒      Build Host: dhat
  Group      : 系统环境/基础                Source RPM: coreutils-5.2.1-31.8.el4_7.1.src.rpm
  Size        : 7314345                          License: GPL
  Signature  : DSA/SHA1, 2008年10⽉27⽇星期⼀ 22时56分59秒, Key ID 219180cddb42a60e
  Packager    : Red Hat, Inc. <>
  URL        :
  Summary    : GNU 核⼼⼯具:⼀组在 shell 脚本中常⽤的⼯具。
  Description :
  这些是 GNU 的核⼼⼯具。该软件包是⽼的 GNUfileutils、sh-utils、
  和 textutils 软件包的组合。
  --------------------------------------------------------------------------
  通过上⾯的信息,我们可以知道cat命令是来源于coreutils-5.2.1-31.8.el4_7.1.src.rpm源码包,我们可以到上⾯信息提到的上去tarball,也可以到rpmfind⽹站上去搜索coreutils-5.2.1-31.8.el4_7.1.src.rpm此源码包。
  若是的包,则tar 包即可;
  若是下载的src.rpm源码包,则:
  1、rpm2cpio  coreutils-5.2.1-31.8.el4_7.1.src.rpm| cpio -idv
  2、此时会在当前⽬录下产⽣coreutils-5.2.1.tar.bz2⽂件
  3、bzip2 -d coreutils-5.2.1.tar.bz2 解压,会产⽣coreutils-5.2.1.tar ⽂件
  4、tar xvf coreutils-5.2.1.tar 此时在当前⽬录下将产⽣coreutils-5.2.1⽬录,源码便在其中。
  进⼊coreutils-5.2.1⽬录,下⾯的src⽂件夹便是存放cat命令源代码的地⽅,当然了除了cat,linux的很多基础的外置命令的源代码都存放其中,像cp,chown,chmod,df,ls,rm,dd等等
  对了,顺便说⼀下,coreutils-5.2.1⽬录下的configure脚本有5w多⾏哦,⾥⾯体现了很多shell的编程技巧,很值得喜欢shell并且想进⼀步深⼊学习shell编程的朋友去拜读⼀下哦。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。