我想知道这是否可能,创建一个别名,如果该命令尚不存在,则执行 sudo apt-get 操作,然后实现别名以停止进行此更改。
因此我正在寻找这种语义
smartalias top =
if (not installed htop) then
install htop;
alias top htop;
top
答案1
您可以使用 shell 函数:
top() {
if ! type htop &>/dev/null; then
sudo apt-get install htop
fi
htop
}
答案2
Bash 有一个现有的功能可以解决这个问题:command_not_found_handle
。这是当 bash 尝试执行外部命令时执行的钩子。 Zsh 有command_not_found_handler
这是相似的。许多发行版都设置了 bash,以便在您尝试执行不存在的命令时它会提供安装相关包的功能。例如,您似乎使用的是 Debian 衍生版本,因此安装command-not-found
包裹。这种机制相当于为发行版提供的每个命令设置所需的别名。