Sử dụng set -x
trong vỏ.
$ alias hello='echo hello world!'
$ hello
hello world!
$ set -x
$ hello
+ echo hello world!
hello world!
Sử dụng set -x
lần lượt trên các xtrace
tùy chọn vỏ ( set +x
biến nó off) và nên làm việc trong tất cả các Bourne giống như vỏ, giống như bash
, dash
ksh93
, pdksh
và zsh
. Điều này nhắc shell để hiển thị lệnh được thực thi sau khi mở rộng bí danh và mở rộng biến, v.v. đã được thực hiện.
Đầu ra sẽ nằm trên luồng lỗi tiêu chuẩn của shell (giống như dấu nhắc thông thường) vì vậy nó sẽ không can thiệp vào các chuyển hướng của đầu ra tiêu chuẩn và nó sẽ được đi trước bởi một dấu nhắc như được xác định bởi PS4
biến shell ( +␣
theo mặc định).
Ví dụ với một vài chức năng:
$ 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!
Tôi đang chạy với set -x
tất cả các shell tương tác của tôi theo mặc định. Thật tuyệt khi thấy những gì thực sự đã được thực thi ... nhưng tôi nhận thấy rằng việc hoàn thành tab có thể lập trình, v.v. có thể gây ra đầu ra dấu vết không mong muốn trong một số shell.
$@
một phần của bí danh của bạn? Hãy nhớ rằng các bí danh không thực sự hỗ trợ các đối số, điều đó sẽ mở rộng đến các tham số vị trí (nếu có) của bối cảnh gọi bí danh. Cách chạy thông thườngsomealias some args
chỉ hoạt động bằng cách mở rộng bí danh và để các đối số tuân theo nó. Nếu bạn thực sự muốn có thể truy cập các đối số, hãy sử dụng một hàm và trích dẫn"$@"