1. 以搜索ls命令源碼為例,先搜索命令所在包,命令如下:
創(chuàng)新互聯專注為客戶提供全方位的互聯網綜合服務,包含不限于成都做網站、成都網站設計、魏都網絡推廣、微信小程序開發(fā)、魏都網絡營銷、魏都企業(yè)策劃、魏都品牌公關、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創(chuàng)新互聯為所有大學生創(chuàng)業(yè)者提供魏都建站搭建服務,24小時服務熱線:18982081108,官方網址:www.cdcxhl.com
lpj@lpj-linux:~$ which ls
/bin/ls
2. 用命令搜索該軟件所在包,代碼如下:
lpj@lpj-linux:~$ dpkg -S /bin/ls
coreutils: /bin/ls
3. 從上一步中可以知道ls命令的實現在包coreutils中,用apt安裝(說安裝有些歧義,主要是區(qū)分apt-get -d)該包的源代碼然后解壓,代碼如下:
sudo apt-get source coreutils
cd /usr/src/coreutils-XXX #XXX表示版本號
sudo tar zxvf coreutils-XXX.tar.gz
或者只下載源碼,然后手動打補丁再解壓,代碼如下:
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,這幾步執(zhí)行完后,就可以進入/usr/src/coreutils-XXX/coreutils-XXX/src中查看各命令對應的源代碼了
bc是dc的前端,dc是unix下的程序,很古老,很難用
"dc is a desk calculator program that takes input in reverse Polish notation"
命名基本上都是縮寫
list-ls
move-mv
copy-cp
像dc這種屬于第三方程序,命名就不那么嚴謹,比如mc,其實是midnight-commander,不看manpage很難猜到意思
linux下沒有這些命令的源代碼,需要到網上去down它們的rpm包,解壓后可以找到它們的源碼
例如:想在Linux系統下查看cat命令工具的源碼,方法如下:
1、查看工具的路徑
$?whereis?cat
cat:?/bin/cat?/usr/share/man/man1/cat.1.gz
2、查看工具所屬的包
$?dpkg?-S?/bin/cat
coreutils:?/bin/cat
coreutils就是cat的源碼包名
3、下載工具源碼包
$?sudo?apt-get?source?coreutils
[sudo]?password?for?lizh:?
正在讀取軟件包列表...?完成
正在分析軟件包的依賴關系樹???????
正在讀取狀態(tài)信息...?完成???????
需要下載?10.8MB?的源代碼包。
獲?。???maverick/main?coreutils?8.5-1ubuntu3?(dsc)?[1,891B]
獲?。???maverick/main?coreutils?8.5-1ubuntu3?(tar)?[10.7MB]
獲?。???maverick/main?coreutils?8.5-1ubuntu3?(diff)?[21.5kB]
下載?10.8MB,耗時?42秒?(254kB/s)????????????????????????????????????????????
gpgv:?于?2015年07月06日?星期一?13時49分55秒?CST?創(chuàng)建的簽名,使用?RSA,鑰匙號?21B2133D
gpgv:?無法檢查簽名:找不到公鑰
dpkg-source:?警告:?對?./coreutils_8.5-1ubuntu3.dsc?校驗簽名失敗
dpkg-source:?info:?extracting?coreutils?in?coreutils-8.5
dpkg-source:?info:?unpacking?coreutils_8.5.orig.tar.gz
dpkg-source:?info:?applying?coreutils_8.5-1ubuntu3.diff.gz