Execute outro comando antes de executar o comando que o usuário deseja executar

9

Digamos que eu queira modificar o comportamento original da ferramenta ls desta maneira:

$ ls
Hello World
file1 file2 ...

Como posso fazer isso?

Ao executar ls , gostaria de executar outro comando, digamos echo "Hello World!" .

A solução rápida que vejo é usar alias:

alias orig_ls="ls"
alias ls='echo "Hello World!"'

No entanto, isso não é uma solução real, pois quando eu executar orig_ls , a saída será "Hello World!" .

    
por Ionică Bizău 25.01.2015 / 15:33

2 respostas

13

Às vezes, um alias não é poderoso o suficiente para fazer com facilidade o que você quer, então aqui está uma maneira de usá-las.

Em alguns arquivos que são originados quando seu shell é iniciado (por exemplo, .bashrc ), adicione a seguinte função:

ls () {
    echo "Hello world!"
    command ls
}

Ao contrário de um alias, uma função pode ser recursiva. É por isso que command ls é usado em vez de ls ; ele diz ao seu shell para usar o ls real em vez da função que você acabou de definir.

    
por 26.01.2015 / 01:44
9

Você não deve esquecer de chamar ls :

alias ls='echo "Hello World!"; ls'
    
por 25.01.2015 / 15:38