และไม่ได้พูดว่า " $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 นั่นเป็นการปิดการใช้งานข้อความใด ๆ และทั้งหมดด้านบนบรรทัดปัจจุบันหรือเพียงแค่เหนือสิ่งอื่นใดด้านบนของหน้าจอ ฉันรู้ว่ามันไม่ใช่สิ่งที่คุณขอคุ้มค่ากับการยิง