Um apelido bash recursivo complicado? instalar na primeira utilização

0

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
    
por Yossi Gil 02.03.2016 / 21:05

2 respostas

2

Você pode usar uma função de shell:

top() {
    if ! type htop &>/dev/null; then
        sudo apt-get install htop
    fi
    htop
}
    
por 02.03.2016 / 21:13
1

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.

    
por 03.03.2016 / 01:30

Tags