Você pode usar uma função de shell:
top() {
if ! type htop &>/dev/null; then
sudo apt-get install htop
fi
htop
}
Eu me pergunto se isso é possível, faça um alias, que faça um sudo apt-get para o comando se ele já não estiver lá, e então faça uma auto-afirmação para parar de fazer isso.
Assim, estou procurando por essa semântica
smartalias top =
if (not installed htop) then
install htop;
alias top htop;
top
Você pode usar uma função de shell:
top() {
if ! type htop &>/dev/null; then
sudo apt-get install htop
fi
htop
}
O Bash tem um recurso existente para cuidar disso: command_not_found_handle
. Este é um gancho que é executado quando o bash tenta executar um comando externo. O Zsh tem command_not_found_handler
que é semelhante. Muitas distribuições
configure o bash para que ele ofereça a instalação do pacote relevante se você tentar executar um comando que não existe. Por exemplo, você parece estar em um derivado Debian, então instale o command-not-found
package . Esse mecanismo é equivalente a configurar o alias que você deseja para cada comando fornecido pela distribuição.