และไม่ได้พูดว่า " $TERM
" - xterm
มันเสมอ
วิธีสามารถbash
สคริปต์บอกสิ่งที่ขั้วมันทำงานในโดยเฉพาะไม่ว่าจะเป็น iTerm, Terminal.app หรือจริง xterm?
ฉันถามเพราะreset
ไม่ทำงานนอกกรอบบน Terminal.app และ iTerm2 อย่างไรก็ตาม iTerm2 รู้จักลำดับการหลบหนีสำหรับทำการรีเซ็ตเทอร์มินัล ( \x1b]50;ClearScrollback\x07
) และหากฉันตรวจพบได้ฉันสามารถลบล้างreset
ด้วยนามแฝงที่ทำสิ่งที่ถูกต้องได้ AFAICT, Terminal.app ขาดลำดับรีเซ็ตและคนหันไปไร้สาระทอม-hackery จะตัดรอบที่
เป้าหมายสุดท้ายของฉันที่นี่คือการreset
ทำงานเหมือนกันไม่ว่าฉันจะทำงานบน OS X หรือ Linux ทำงานในพื้นที่หรือจากระยะไกลผ่าน SSH (ฉันไม่ต้องการที่จะพยายามจำสิ่งที่และมันมีประโยชน์ที่จะทำreset && command-that-outputs-a-bunch
และมีงานขึ้น) Terminal.app และ iTerm โยนประแจในแผนนี้โดยการใช้งานไม่reset
ถูกต้อง
ซึ่งหมายความว่าการเอาชนะอย่างง่ายreset
นั้นไม่ได้เป็นอย่างนั้น: ถ้าฉันใช้เครื่องลีนุกซ์, มันต้องรู้ว่าฉันใช้gnome-terminal
หรือ iTerm เพื่อส่งลำดับการหลบหนีที่ถูกต้องหรือไม่
มีวิธีใด ๆ (แม้ว่าฉันต้องการioctl
) เพื่อขอให้ขั้วสิ่งที่มันจริงๆคืออะไร?
¹สำหรับวัตถุประสงค์ของคำถามนี้การรีเซ็ตควรล้างหน้าจอรีเซ็ตเคอร์เซอร์และล้างบัฟเฟอร์การเลื่อนกลับ
reset
เพราะนั่นคือสิ่งที่นิ้วมือของฉันรู้
reset
คำสั่งให้ล้างเนื้อหาการเลื่อนกลับของเทอร์มินัลอีมูเลเตอร์ แต่ไม่รับประกันว่าจะทำเช่นนั้นเพราะการเลื่อนกลับเป็นคุณสมบัติเฉพาะเทอร์มินัลอีมูเลเตอร์ ส่วนหนึ่งของอาคาร อย่างไรก็ตามเทอร์มิรองรับการขยายตัวของเอ็ด (ลบใน Display) ESC [ 3 J
ลำดับหนีเพื่อลบเลื่อนกลับ คุณสามารถล้างหน้าจอแล้วใช้สิ่งนั้นเช่นreset && printf '\e[3J’
xterm
(ผ่านTERM=xterm
) ฉันคาดหวังว่าคุณจะเลียนแบบ superset ของ XTerm ซึ่งจะเคลียร์ scrollback เมื่อรีเซ็ต (เหมือนกับว่าคุณส่งลำดับการหลบหนีสำหรับ "สีน้ำเงิน" คุณคาดหวังว่าจะเป็นสีน้ำเงิน) ได้รับ xterm ของฉันบอกฉันว่าErase is backspace.
ซึ่งฉันรู้สึกขอบคุณที่ไม่มีสิ่งใดทำ; มันน่ารำคาญมาก
Terminal.app
การตั้งค่าแท็บเทอร์มินัลและตั้งค่าบรรทัดการเลื่อนเป็น 0 นั่นเป็นการปิดการใช้งานข้อความใด ๆ และทั้งหมดด้านบนบรรทัดปัจจุบันหรือเพียงแค่เหนือสิ่งอื่นใดด้านบนของหน้าจอ ฉันรู้ว่ามันไม่ใช่สิ่งที่คุณขอคุ้มค่ากับการยิง