Verwenden Sie set -x
in der Schale.
$ alias hello='echo hello world!'
$ hello
hello world!
$ set -x
$ hello
+ echo hello world!
hello world!
Mit set -x
Windungen auf der xtrace
Shell - Option ( set +x
schaltet es aus) und soll in allen Bourne-like arbeiten Muscheln, wie bash
, dash
ksh93
, pdksh
und zsh
. Dadurch wird die Shell aufgefordert, den Befehl anzuzeigen, der ausgeführt wird, nachdem Alias-Erweiterungen, Variablen-Erweiterungen usw. ausgeführt wurden.
Die Ausgabe erfolgt im Standardfehlerstrom der Shell (genau wie bei der normalen Eingabeaufforderung), sodass die Umleitung der Standardausgabe nicht beeinträchtigt wird. Vor der Ausgabe wird eine Eingabeaufforderung angezeigt, die von der PS4
Shell-Variablen definiert wird ( +␣
standardmäßig).
Beispiel mit einigen Funktionen:
$ 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!
Ich arbeite set -x
standardmäßig mit allen meinen interaktiven Shells. Es ist schön zu sehen, was tatsächlich ausgeführt wurde ... aber mir ist aufgefallen, dass die Fertigstellung programmierbarer Tabs usw. in einigen Shells zu unerwünschten Trace-Ausgaben führen kann.
$@
zu deinem Pseudonym? Denken Sie daran, dass Aliase Argumente nicht wirklich unterstützen. Diese werden auf die Positionsparameter (falls vorhanden) des Kontexts ausgedehnt, der den Alias aufruft. Die übliche Art der Ausführung besteht darinsomealias some args
, den Alias zu erweitern und die Argumente zu belassen, um ihm zu folgen. Wenn Sie tatsächlich auf die Argumente zugreifen möchten, verwenden Sie eine Funktion und zitieren Sie"$@"