網站搜尋

在 Linux 中命令未找到時建議安裝套件


如你可能已經知道的,當我們在 Linux 中執行一個不可用或無法識別的命令時,我們會收到一個錯誤訊息 - "bash: command not found"。問題是我們當中有些人不知道哪個套件提供了該特定命令。但現在不用擔心了!今天,我遇到了一個有用的工具,叫做 "command-not-found",它可以在你執行 Linux 上不可用的命令時,建議安裝相應的套件。

例如,假設你想執行一個名為「leafpad」的命令,但在你的 Linux 系統中不可用。你不確定哪個套件提供了這個命令。這時「command-not-found」工具就派上用場了。

當輸入無法識別或不可用的命令時,command-not-found 工具會自動搜尋官方倉庫。它使用現有程式及其相關套件的快取,來幫助使用者日常的命令列操作。

在 Linux 中安裝 command-not-found 工具

'command-not-found' 工具可在 AUR 中取得。因此,您可以使用如 Paru 或 Yay 等 AUR 輔助程式來安裝它。

$ paru -S command-not-found

或者,

$ yay -S command-not-found

此外,pkgfile 套件提供了 command-not-found 鉤子。只需安裝 pkgfile 即可使用 command-not-found 工具。

$ sudo pacman -S pkgfile

安裝後,編輯你的 .bashrc 檔案:

$ vi ~/.bashrc

在結尾處添加以下一行以啟用它。

source /usr/share/doc/pkgfile/command-not-found.bash

使用命令更新所做的更改:

$ source ~/.bashrc

在 Ubuntu 及其衍生版本上,它是預先安裝的。

以防它尚未安裝,你可以按如下方式安裝它。

$ sudo apt update
$ sudo apt install command-not-found

系統範圍的快取是空的。您可能需要以 root 身份執行 'apt-file update' 來更新快取。

安裝後,您可能需要以 root 身份執行以下命令,以更新系統範圍的快取。

$ sudo update-command-not-found
$ sudo apt-file update

在 Linux 中命令未找到時建議安裝套件

現在,執行任何不可用的命令,例如 leafpad:

它會建議你哪個套件提供這個指令。以下是我在 Arch Linux 系統上的輸出。

$ leafpad 
Command 'leafpad' not found, but can be installed with:
sudo snap install leafpad

如你在上面的輸出中所見,"leafpad" 指令由 leafpad-0.8.18.1-5 套件提供。

讓我們在 Ubuntu 上嘗試另一個指令:

$ emacs
The program 'emacs' can be found in the following packages:
 * emacs24
 * emacs24-nox
 * e3
 * emacs23
 * emacs23-lucid
 * emacs23-nox
 * emacs24-lucid
 * jove
Try: sudo apt-get install <selected package>

在 Linux 中命令未找到時建議安裝套件

這只是一個範例。當你執行任何不可用的指令時,這個工具會建議安裝相應的套件。一旦你移除了這個工具,它就不會再提供任何建議。它只會簡單地顯示類似下面的輸出。

"bash: emacs: command not found"

希望這對你有幫助。