Aliasing um comando com o parâmetro fornecido para outro comando

0

Ou seja: eu quero alias tail -f to less +F , mas deixo o tail com qualquer outro parâmetro fornecido funcionar da mesma maneira que antes.

    
por syntagma 30.03.2015 / 19:27

1 resposta

2

Isso está um pouco além dos poderes que os aliases de shell fornecem (assumindo o bash). Você poderia definir uma função:

function tail() {
    if [ "$1" == '-f' ]; then
        shift
        less +F "$@"
     else
         command tail "$@"
     fi
 }

Quando você digita tail , isso agora se refere à função definida acima, que verifica seu primeiro argumento, se houver, para a igualdade com -f e, se corresponder, executa less +F no restante do original argumentos ( shift remove o primeiro dos argumentos originais, %código%). Caso contrário, ele chama o comando -f com todo o original argumentos (chamar o tail incorporado é necessário para evitar Loop infinito; sem isso, command se referiria à função sendo definido, causando um loop infinito).

    
por 30.03.2015 / 19:46