Sử dụng set -xtrong vỏ.
$ alias hello='echo hello world!'
$ hello
hello world!
$ set -x
$ hello
+ echo hello world!
hello world!
Sử dụng set -xlần lượt trên các xtracetùy chọn vỏ ( set +xbiế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, pdkshvà 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 PS4biế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 -xtấ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 argschỉ 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"$@"