Ejecute otro comando antes de ejecutar el comando que el usuario desea ejecutar

Ejecute otro comando antes de ejecutar el comando que el usuario desea ejecutar

Digamos que quiero modificar el comportamiento original de la lsherramienta de esta manera:

$ ls
Hello World
file1 file2 ...

¿Cómo puedo hacer esto?

Al ejecutar, lsme gustaría ejecutar otro comando, digamos echo "Hello World!".

La solución rápida que veo es usar alias:

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

Sin embargo, esta no es una solución real ya que cuando lo ejecute, orig_lsaparecerá "Hello World!".

Respuesta1

A veces, un alias no es lo suficientemente potente como para hacer fácilmente lo que quieres, así que aquí tienes una manera de no usarlos.

En algún archivo que se obtiene cuando se inicia su shell (por ejemplo .bashrc), agregue la siguiente función:

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

A diferencia de un alias, una función puede repetirse. Por eso command lsse usa en lugar de ls; le dice a su shell que use la lsfunción real en lugar de la que acaba de definir.

Respuesta2

No debes olvidar llamar a ls:

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

información relacionada