Làm thế nào để hoàn tác `set -x`?


77

Tôi gõ set -xvào thiết bị đầu cuối.

Bây giờ thiết bị đầu cuối tiếp tục in lệnh cuối cùng chạy trên đầu ra của tôi để lệnh

~]$echo "this is what I see"

trả lại

+ echo 'this is what I see'
this is what I see

Không có trang man cho set, làm thế nào để tôi set -xtắt?


8
setlà một builtinlệnh shell (ít nhất là trong bash), vì vậy tài liệu được tìm thấy trong trang man của bash. Tìm kiếm trang người đàn ông /^ *SHELL BUILTIN COMMANDSđể đọc tất cả về setvà bạn bè của nó!
dg99

4
nhưng một mantrang cho set! Nó là một phần của hướng dẫn lập trình viên POSIX ... Bạn thực sự nên lấy chuỗi đó ... làm ơn?
mikeerv

8
Trong Bash, gõ help set.
200_success

@ lonewar Warrior556 nếu bạn thấy bất kỳ câu trả lời nào hữu ích, bạn có thể vui lòng nhận xét và / hoặc đánh dấu một giải pháp. Chúng tôi đóng góp thời gian của mình để hỗ trợ ....
Simply_Me

Câu trả lời:


77

Sử dụng set +x. Thêm thông tin:

$ type set
set is a special shell builtin

setlà một vỏ dựng sẵn, nó được ghi lại trong tài liệu về vỏ của bạn.

Xin lưu ý rằng một số hệ thống có các trang man cho nội dung shell, nhưng các trang man này chỉ đúng nếu bạn đang sử dụng shell mặc định. Trên Linux, bạn có thể có các trang man trình bày các lệnh POSIX, sẽ xuất hiện các nội dung shell vì không có trang man nào của tiện ích độc lập để theo dõi chúng; các trang man này là chính xác cho tất cả các shell kiểu Bourne (dash, bash, * ksh và thậm chí zsh) nhưng thường không đầy đủ.

Xem Đọc và tìm kiếm các trang man dài để biết các mẹo tìm kiếm nội dung trong trang man dài.

Trong trường hợp này, câu trả lời là giống nhau cho tất cả các kiểu vỏ Bourne. Nếu bật một tùy chọn, tắt nó đi. Do đó, tắt dấu vết. Dấu vết cuối cùng mà đọc là không thể tránh khỏi (ngoại trừ bằng cách để thoát khỏi vỏ - đôi khi bạn có thể sử dụng một lớp con ).set -LETTERset +LETTERset +xset +x(set -x; command to trace; other command to trace); command that is not traced


4
Đây là một câu trả lời hay, nhưng nó sẽ giúp tôi tiết kiệm được một vài phút nếu bạn đặt "set + x" cơ bản khi bắt đầu thay vì được nhúng trong đoạn cuối. (Tôi đã tìm thấy chi tiết bổ sung hữu ích.)
DA

2
{ set +x ;} 2> /dev/nullẩn set +xdấu vết (sẽ không hoạt động trong vỏ Bourne). Một số vỏ vẫn xuất ra + 2> /dev/nullmặc dù.
Stéphane Chazelas


18

Bạn đã bật chế độ gỡ lỗi, bạn cần tắt nó đi.

Trích xuất mẫu help set:

Sử dụng + chứ không phải - làm cho các cờ này bị tắt.

Vì vậy, gõ set +x


1
$ set +x # is the opposite of set -x, and will reverse what you typed.

Bạn không thể tìm thấy một trang người đàn ông set, vì như bạn thấy bên dưới:

$ type set

setlà một vỏ đặc biệt. Trong khi được ghi lại trong trang man cho shell của bạn, giả sử bash ở đây, bạn cũng có thể nhận được tài liệu cụ thể với một trong hai

$ help set || builtin help set # luckily Bash has builtin help on builtin commands

Trang hướng dẫn về bash hoặc sh là một trang đọc tốt, nhưng nó hơi dài để sắp xếp. Thông tin hiệu quả bạn cần để hủy đặt -xở cuối trước Exit Status:và đọc:

Sử dụng + chứ không phải - làm cho các cờ này bị tắt. Các cờ cũng có thể được sử dụng khi gọi vỏ. Bộ cờ hiện tại có thể được tìm thấy bằng $ -. Các ARG n còn lại là các tham số vị trí và được gán, theo thứ tự, thành $ 1, $ 2, .. $ n. Nếu không có ARG nào được đưa ra, tất cả các biến shell được in.


Trong khi không sai, bạn đã thêm gì ngoài những câu trả lời hiện có?
Jeff Schaller

@JeffSchaller Nó được chỉnh sửa cho tính trực tiếp và ngắn gọn. Khi tôi cần câu trả lời này, tôi phải đọc toàn bộ trang để tìm ra câu trả lời đúng. Trong thực tế, tôi đã từ bỏ việc đọc câu trả lời được chấp nhận và chỉ cần help setđọc và đọc nó. Tôi đã cố gắng cải thiện câu trả lời được chấp nhận. unix.stackexchange.com/revutions/149137/4 Nó đã được chấp nhận nhưng sau đó bị từ chối. Giống như một bài báo, nó bắt đầu với thông tin quan trọng nhất và cho rằng tại bất kỳ thời điểm nào, người đọc có thể dừng lại, với mỗi câu và đoạn tiếp theo ít quan trọng hơn quá trình tố tụng. Đó là phong cách SO của tôi trên unix se.
dlamblin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.