วิธีเลิกทำ `set -x`


77

ฉันพิมพ์set -xใน terminal

ตอนนี้เทอร์มินัลยังคงพิมพ์คำสั่งล่าสุดที่ทำงานอยู่ด้านบนของผลลัพธ์ของฉันดังนั้นคำสั่ง

~]$echo "this is what I see"

ผลตอบแทน

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

ไม่มี man page สำหรับsetฉันจะset -xปิดได้อย่างไร


8
setเป็นbuiltinคำสั่งเชลล์(อย่างน้อยก็คือ bash) ดังนั้นเอกสารประกอบอยู่ใน man page ของ bash ค้นหาหน้าคน/^ *SHELL BUILTIN COMMANDSเพื่ออ่านเกี่ยวกับsetและเพื่อน ๆ !
dg99

4
แต่มีmanหน้าset! มันเป็นส่วนหนึ่งของคู่มือโปรแกรมเมอร์ POSIX ... คุณควรจริงๆได้รับชุดที่ ... โปรด?
mikeserv

8
help setในทุบตีพิมพ์
200_success

@ lonewarrior556 หากคุณพบคำตอบใด ๆ ที่เป็นประโยชน์คุณสามารถโปรดแสดงความคิดเห็นและ / หรือทำเครื่องหมายวิธีแก้ปัญหา เราให้เวลากับเราเพื่อช่วยเหลือ ....
Simply_Me

คำตอบ:


77

set +xใช้ ข้อมูลมากกว่านี้:

$ type set
set is a special shell builtin

เนื่องจากsetเป็นเชลล์ในตัวจึงมีการบันทึกไว้ในเอกสารประกอบของเชลล์

ระวังว่าบางระบบมี man page สำหรับ shell builtins แต่ man page เหล่านี้จะถูกต้องก็ต่อเมื่อคุณใช้เชลล์เริ่มต้น บน Linux คุณอาจมี man page ที่แสดงคำสั่ง POSIX ซึ่งจะเปิดขึ้นสำหรับ shell builtin เพราะไม่มี man page ของยูทิลิตีแบบสแตนด์อโลนเพื่อทำเงาพวกมัน man page เหล่านี้ถูกต้องสำหรับเชลล์สไตล์ Bourne ทั้งหมด (เส้นประ, ทุบตี, * ksh และแม้แต่ zsh) แต่โดยทั่วไปแล้วจะไม่สมบูรณ์

ดูการอ่านและค้นหาหน้าคนยาวสำหรับเคล็ดลับในการค้นหาตัวในหน้าเปลือกแบบยาว

ในกรณีนี้คำตอบจะเหมือนกันสำหรับเชลล์สไตล์ Bourne ทั้งหมด หากเปิดตัวเลือกปิดมัน ดังนั้นจะปิดการติดตาม การติดตามครั้งสุดท้ายที่อ่านไม่สามารถหลีกเลี่ยงได้ (ยกเว้นการปล่อยให้เปลือกออก - บางครั้งคุณสามารถใช้ subshell )set -LETTERset +LETTERset +xset +x(set -x; command to trace; other command to trace); command that is not traced


4
นี่เป็นคำตอบที่ดี แต่มันจะช่วยฉันสักสองสามนาทีถ้าคุณวาง "set + x" พื้นฐานไว้ตอนเริ่มแทนที่จะฝังลงในย่อหน้าสุดท้าย (ฉันไม่พบรายละเอียดเพิ่มเติมที่เป็นประโยชน์.)
DA

2
{ set +x ;} 2> /dev/nullซ่อนการset +xติดตาม (จะไม่ทำงานในเชลล์เป้าหมาย) กระสุนบางตัวยังคงแสดงผล+ 2> /dev/nullอยู่
Stéphane Chazelas


18

คุณได้เปิดใช้งานโหมดแก้ไขข้อบกพร่องคุณต้องปิด

แยกรูปแบบhelp set:

การใช้ + ไม่ใช่ - ทำให้สถานะเหล่านี้ถูกปิด

ดังนั้นพิมพ์ set +x


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

คุณไม่พบหน้าคนเพียงsetเพราะคุณเห็นด้านล่าง:

$ type set

setเป็นเปลือกในตัวพิเศษ ในขณะที่จัดทำเอกสารไว้ในหน้า man สำหรับ shell ของคุณโดยสมมติว่าทุบตีที่นี่คุณยังสามารถรับเอกสารเฉพาะได้เช่นกัน

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

หน้าคู่มือบน bash หรือ sh เป็นการอ่านที่ดี แต่มันค่อนข้างยาวในการสังคายนา ข้อมูลที่มีประสิทธิภาพที่คุณต้องการในการยกเลิกการตั้งค่าของคุณ-xอยู่ในตอนท้ายก่อนExit Status:และอ่าน:

การใช้ + ไม่ใช่ - ทำให้สถานะเหล่านี้ถูกปิด แฟล็กยังสามารถใช้เมื่อเรียกใช้งานเชลล์ ชุดธงปัจจุบันอาจพบได้ใน $ - ส่วนที่เหลืออีก ARGs เป็นพารามิเตอร์ตำแหน่งและได้รับมอบหมายตามลำดับถึง $ 1, $ 2, .. $ n หากไม่มีการกำหนด ARG ตัวแปรเชลล์ทั้งหมดจะถูกพิมพ์


ในขณะที่ไม่ผิดคุณเพิ่มอะไรนอกเหนือจากคำตอบที่มีอยู่?
Jeff Schaller

@JeffSchaller มันถูกแก้ไขเพื่อความตรงและความกะทัดรัด เมื่อฉันต้องการคำตอบนี้ฉันต้องอ่านทั้งหน้าเพื่อหาคำตอบที่ถูกต้อง ในความเป็นจริงฉันเลิกอ่านคำตอบที่ยอมรับแล้วก็ไปhelp setและอ่านมัน ฉันพยายามปรับปรุงคำตอบที่ได้รับการยอมรับ unix.stackexchange.com/revisions/149137/4เป็นที่ยอมรับ แต่ถูกปฏิเสธ เช่นเดียวกับบทความข่าวมันเริ่มต้นด้วยข้อมูลที่สำคัญที่สุดและสมมติว่า ณ จุดใดก็ตามที่ผู้อ่านอาจหยุดโดยที่แต่ละประโยคและย่อหน้าถัดไปมีความสำคัญน้อยกว่าการดำเนินการ มันเป็นสไตล์ SO ของฉันในยูนิกซ์
dlamblin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.