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

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

Digamos que eu queira modificar o comportamento original da lsferramenta desta forma:

$ ls
Hello World
file1 file2 ...

Como posso fazer isso?

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

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

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

No entanto, esta não é uma solução real, pois quando eu for executá-la, orig_lsa saída será "Hello World!".

Responder1

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

Em algum arquivo originado 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 a função real lsem vez da função que você acabou de definir.

Responder2

Você não deve esquecer de ligar ls:

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

informação relacionada