Bagaimana cara membatalkan `set -x`?

77

Saya mengetik set -xdi terminal.

Sekarang terminal terus mencetak perintah terakhir yang dijalankan di atas output saya jadi perintah

~]$echo "this is what I see"

kembali

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

Tidak ada halaman manual untuk set, bagaimana cara set -xmematikan?

lonewarrior556
sumber
8
setadalah builtinperintah shell (setidaknya dalam bash), jadi dokumentasi ditemukan di halaman manual bash. Cari halaman manual untuk /^ *SHELL BUILTIN COMMANDSmembaca semua tentang setdan teman-temannya!
dg99
4
tapi ada sebuah manhalaman untuk set! Ini adalah bagian dari panduan pemrogram POSIX ... Anda harus benar - benar mendapatkan seri itu ... tolong?
mikeserv
8
Di Bash, ketik help set.
200_success
@ lonewarrior556 jika Anda menemukan salah satu jawabannya bermanfaat, dapatkah Anda berkomentar dan / atau menandai solusi. Kami menyumbangkan waktu kami untuk membantu ....
Simply_Me

Jawaban:

77

Gunakan set +x. Informasi lebih lanjut:

$ type set
set is a special shell builtin

Karena setini adalah shell bawaan, ia didokumentasikan dalam dokumentasi shell Anda.

Berhati-hatilah karena beberapa sistem memiliki halaman manual untuk shell builtin, tetapi halaman manual ini hanya benar jika Anda menggunakan shell default. Di Linux, Anda mungkin memiliki halaman manual yang menyajikan perintah POSIX, yang akan muncul untuk shell builtin karena tidak ada halaman manual utilitas mandiri untuk membayangi mereka; halaman manual ini benar untuk semua shell gaya Bourne (tanda hubung, bash, * ksh, dan bahkan zsh) tetapi biasanya tidak lengkap.

Lihat Membaca dan mencari halaman manual panjang untuk tips mencari builtin di halaman manual shell panjang.

Dalam hal ini, jawabannya adalah sama untuk semua kerang gaya Bourne. Jika menyalakan opsi, matikan. Dengan demikian, mematikan jejak. Jejak terakhir yang berbunyi tidak dapat dihindari (kecuali dengan membiarkan shell keluar - terkadang Anda dapat menggunakan subkulit ).set -LETTERset +LETTERset +xset +x(set -x; command to trace; other command to trace); command that is not traced

Gilles
sumber
4
Ini adalah jawaban yang baik, tetapi akan menyelamatkan saya beberapa menit jika Anda meletakkan dasar "set + x" di awal daripada tertanam dalam paragraf terakhir. (Saya memang menemukan detail tambahan bermanfaat.)
DA
2
{ set +x ;} 2> /dev/nullmenyembunyikan set +xjejak (tidak akan bekerja di shell Bourne). Beberapa shell masih menghasilkan + 2> /dev/nullmeskipun.
Stéphane Chazelas
51

Anda dapat menghentikan mode debugging dengan set +x. Lihat halaman contoh

Simply_Me
sumber
18

Anda telah mengaktifkan mode debug, Anda harus mematikannya.

Bentuk ekstrak help set:

Menggunakan + daripada - menyebabkan bendera ini dimatikan.

Jadi ketik set +x

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

Anda tidak dapat menemukan halaman manual hanya di set, karena seperti yang Anda lihat di bawah:

$ type set

setadalah shell builtin khusus. Saat didokumentasikan di halaman manual untuk shell Anda, dengan dugaan bash di sini, Anda juga dapat memperoleh dokumentasi khusus

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

Halaman manual tentang bash atau sh adalah bacaan yang bagus, tapi agak lama untuk diselesaikan. Informasi efektif yang Anda perlukan untuk meng-unset Anda -xada di akhir sebelumnya Exit Status:dan berbunyi:

Menggunakan + daripada - menyebabkan bendera ini dimatikan. Bendera juga dapat digunakan atas permintaan shell. Set flag saat ini dapat ditemukan dalam $ -. Sisa n ARG adalah parameter posisi dan ditetapkan, dalam urutan, menjadi $ 1, $ 2, .. $ n. Jika tidak ada ARG yang diberikan, semua variabel shell dicetak.

dlamblin
sumber
Meskipun tidak salah, apa yang telah Anda tambahkan di luar jawaban yang ada?
Jeff Schaller
@JeffSchaller Diedit untuk keterusterangan dan singkatnya. Ketika saya membutuhkan jawaban ini, saya harus membaca seluruh halaman untuk menemukan jawaban yang benar. Sebenarnya saya menyerah membaca jawaban yang diterima dan hanya pergi help setdan membaca itu. Saya mencoba meningkatkan jawaban yang diterima. unix.stackexchange.com/revisions/149137/4 Itu diterima tetapi kemudian ditolak. Seperti artikel berita, artikel ini dimulai dengan informasi yang paling penting dan mengasumsikan bahwa pada titik mana pun pembaca dapat berhenti, dengan setiap kalimat dan paragraf berikutnya menjadi kurang penting daripada prosesnya. Ini gaya SO saya di unix se.
dlamblin