set -x
Kabukta kullanın .
$ alias hello='echo hello world!'
$ hello
hello world!
$ set -x
$ hello
+ echo hello world!
hello world!
Kullanımı set -x
ile ilgili dönüşleri xtrace
kabuk seçeneği ( set +x
kapanır) ve çalışmalıdır tüm Bourne benzeri kabukları gibi bash
, dash
ksh93
, pdksh
ve zsh
. Bu, kabuktan takma genişletmeler ve değişken genişletmeler vb. Gerçekleştirildikten sonra yürütülen komutu görüntülemesini ister.
Çıktı, kabuğun standart hata akışında olacaktır (tıpkı sıradan istem gibi), bu nedenle standart çıkışın yeniden yönlendirmelerine müdahale etmez ve öncesinde PS4
kabuk değişkeni tarafından tanımlanan bir istem ( +␣
varsayılan olarak) olur.
Birkaç işlev içeren örnek:
$ 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!
set -x
Varsayılan olarak tüm etkileşimli kabuklarımda koşuyorum . Gerçekte ne yürütüldüğünü görmek güzel ... ama programlanabilir sekme tamamlama vb. Bazı kabuklarda istenmeyen iz çıktısına neden olabilir.
$@
takma adın bir parçası mı ? Takma adların, takma adı çağıran bağlamın konum parametrelerine (varsa) genişleyecek bağımsız değişkenleri gerçekten desteklemediğini unutmayın. Olağan çalışma şeklisomealias some args
, takma adı genişleterek ve argümanları takip etmek için bırakarak çalışır. Eğer gerçekten argümanlara erişmek istiyorsanız, bir fonksiyon kullanın ve"$@"