Uso set -x
en la cáscara.
$ alias hello='echo hello world!'
$ hello
hello world!
$ set -x
$ hello
+ echo hello world!
hello world!
El uso de set -x
vueltas en la xtrace
opción del shell ( set +x
lo apaga) y debería funcionar en toda Bourne-como conchas, como bash
, dash
ksh93
, pdksh
y zsh
. Esto hace que el shell muestre el comando que se ejecuta después de que se hayan realizado expansiones de alias y expansiones variables, etc.
El resultado estará en la secuencia de error estándar del shell (al igual que el indicador ordinario), por lo que no interferirá con las redirecciones del resultado estándar, y estará precedido por un indicador definido por la PS4
variable del shell ( +␣
por defecto).
Ejemplo con algunas funciones:
$ world () { echo "world"; }
$ hello () { echo "hello"; }
$ helloworld () { printf '%s %s!\n' "$(hello)" "$(world)"; }
$ helloworld
hello world!
$ set -x
$ helloworld
+ helloworld
++ hello
++ echo hello
++ world
++ echo world
+ printf '%s %s!\n' hello world
hello world!
Estoy corriendo con set -x
todos mis shells interactivos por defecto. Es agradable ver lo que realmente se ejecutó ... pero he notado que la finalización programable de pestañas, etc., puede causar resultados de rastreo no deseados en algunos shells.
$@
parte de tu alias? Recuerde que los alias realmente no admiten argumentos, que se expandirán a los parámetros posicionales (si los hay) del contexto que llama al alias. La forma habitual de ejecuciónsomealias some args
funciona simplemente expandiendo el alias y dejando los argumentos para seguirlo. Si realmente desea poder acceder a los argumentos, utilice una función y cite el"$@"