閱讀 Linux Shell 命令的原始碼


要閱讀 Linux 上 shell 命令的原始碼,可以使用命令列實用程式 cat 或 less 來檢視檔案。您還可以使用 vi、nano 或 emacs 等文字編輯器來開啟和編輯程式碼。

例如,要檢視 ls 命令的原始碼,可以使用以下命令:

cat /bin/ls

如果您想檢視從包管理器安裝的命令的原始碼,可以使用包管理器命令來查詢原始碼的位置。例如,在基於 Debian 的系統上,可以使用以下命令:

dpkg -L <package-name>

這將列出包中包含的檔案,然後您可以導航到相應的檔案以檢視原始碼。

您還可以使用 find 命令查詢命令的原始碼,例如:

find / -name ls 2>/dev/null

這將搜尋您的整個檔案系統以查詢名為 ls 的檔案,並顯示其位置。

請注意,某些命令可能沒有原始碼,它們是內建在 shell 中或二進位制檔案,在這些情況下,您可以使用 strings 或 objdump 命令檢視命令正在使用的一些程式碼。

查詢原始碼

要查詢特定程式的原始碼,您可以嘗試以下幾種方法:

檢視程式或專案的官方網站。許多開源程式在其官方網站上提供原始碼下載。

在 GitHub、GitLab 或其他程式碼託管平臺上搜索程式。許多開源程式都託管在這些平臺上,您可以輕鬆找到並下載原始碼。

使用包管理器命令,如 apt-get source、yumdownloader、dnf download 等,具體取決於 Linux 發行版。這些命令將為您下載包的原始碼。

檢視程式文件中的原始碼。一些程式在其文件中包含指向其原始碼的連結。

使用搜索引擎查詢原始碼。您可以搜尋程式名稱後跟“原始碼”或“github”等關鍵詞來查詢原始碼。

值得注意的是,一些軟體是閉源的,原始碼不公開。在這種情況下,您將無法找到原始碼。

使用包管理器

要使用包管理器查詢和下載程式的原始碼,您首先需要知道程式所在的包的名稱。一旦知道包名,就可以使用包管理器命令下載原始碼。

以下是一些如何在不同 Linux 發行版上使用包管理器下載程式原始碼的示例:

在基於 Debian 的系統(如 Ubuntu)上,可以使用命令 apt-get source <package-name> 下載包的原始碼。例如,要下載 ls 命令的原始碼,可以使用以下命令:

apt-get source coreutils

在 Fedora、Red Hat 和 CentOS 系統上,可以使用命令 yumdownloader --source <package-name> 下載包的原始碼。例如,要下載 ls 命令的原始碼,可以使用以下命令:

yumdownloader --source coreutils

在基於 Arch Linux 的系統上,可以使用命令 pacman -S --needed base-devel 安裝基本開發包,然後使用 yaourt -S --aur <package-name> 下載包的原始碼。

在 OpenSuse 系統上,可以使用命令 zypper source-install <package-name> 下載包的原始碼。

值得注意的是,某些包可能沒有提供原始碼,在這種情況下,您將收到錯誤訊息。

此外,在安裝或構建原始碼之前,請確保您的系統上安裝了必要的依賴項和開發工具。

基於 Debian 的系統

在基於 Debian 的系統(如 Ubuntu、Mint、Debian 等)上,可以使用 apt-get 命令下載包的原始碼。apt-get source 命令將下載包及其所有依賴項的原始碼。

以下是如何在基於 Debian 的系統上使用 apt-get 命令下載 ls 命令的原始碼的示例:

apt-get source coreutils

此命令將下載包含 ls 命令的 coreutils 包及其所有依賴項的原始碼。原始碼將下載到當前工作目錄,並將以 .tar.gz 檔案的形式存在。

您還可以使用 apt-get build-dep <package-name> 安裝構建包所需的依賴項。

然後,您可以使用命令 tar -xzvf <package-name>.tar.gz 解壓縮原始碼,然後導航到解壓縮的目錄,使用命令 dpkg-buildpackage -us -uc 構建和安裝包。

值得注意的是,apt-get source 命令將下載當前安裝在系統上的版本的包的原始碼。如果您想下載特定版本的包原始碼,可以使用 -t 選項後跟要下載的版本號。

例如,要下載 coreutils 包的 8.31 版,可以使用以下命令:

apt-get source -t 8.31-1 coreutils

此外,請注意,您需要在系統上安裝 apt-src 包才能使用 apt-get source 命令。

基於 Red Hat 的系統

在基於 Red Hat 的系統(如 Fedora、Red Hat Enterprise Linux、CentOS 等)上,可以使用 yumdownloader 命令下載包的原始碼。

以下是如何在基於 Red Hat 的系統上使用 yumdownloader 命令下載 ls 命令的原始碼的示例:

yumdownloader --source coreutils

此命令將下載包含 ls 命令的 coreutils 包的原始碼,以 .src.rpm 檔案的形式存在。下載的檔案將位於當前工作目錄。

您還可以使用 yum-builddep 命令安裝構建包所需的依賴項。

然後,您可以使用 rpmbuild 命令解壓縮原始碼,並構建包。

rpmbuild --rebuild <package-name>.src.rpm

值得注意的是,yumdownloader 命令將下載當前安裝在系統上的版本的包的原始碼。如果您想下載特定版本的包原始碼,可以使用 --releasever 選項後跟要下載的版本號。

例如,要下載 coreutils 包的 8.31 版,可以使用以下命令:

yumdownloader --releasever=8.31 --source coreutils

此外,請注意,您需要在系統上安裝 yum-utils 包才能使用 yumdownloader 命令。

結論

要查詢和下載 Linux 上程式的原始碼,可以使用與您的 Linux 發行版相對應的包管理器命令。在基於 Debian 的系統上,可以使用 apt-get source 命令,在基於 Red Hat 的系統上,可以使用 yumdownloader --source 命令。

更新於:2023-01-25

3K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告