PuTTY: เคลียร์ scrollback จาก commandline


27

เมื่อฉันเชื่อมต่อกับเซิร์ฟเวอร์ของฉันผ่าน PuTTY ฉันสามารถล้างหน้าจอที่มองเห็นได้ด้วยclearคำสั่ง

อย่างไรก็ตามฉันยังสามารถเลื่อนไปด้านหลังใน GUI ของ PuTTY เพื่อดูสิ่งเก่า ฉันรู้ถึงคุณสมบัติClear Scrollbackของ PuTTY แต่ต้องใช้การคลิกเมาส์

ฉันต้องการดำเนินการ "Clear Scrollback" ที่เหมือนกันทุกประการ แต่จาก commandline

มันเป็นไปได้?

ฉันอ่านเว็บไซต์นี้ซึ่งดูเหมือนว่าจะเป็นเช่นนั้น

อย่างไรก็ตามการทดสอบของฉันล้มเหลว ตัวอย่างเช่น

printf '\033[3J'

ไม่ทำอะไรเลยสำหรับฉัน

ฉันอาจไม่เข้าใจความหมายของCSI 3 Jลิงค์ที่สองนั้น ...


คุณใช้ PuTTY รุ่นใดอยู่ หน้าระบุว่าคุณสมบัติใช้งานได้ใน PuTTY 0.59 ขึ้นไป ฉันมี PuTTY 0.60 และใช้งานได้สำหรับฉัน โปรดทราบว่าจะล้างเฉพาะบัฟเฟอร์เลื่อนเท่านั้นมันไม่ได้ล้างหน้าจอ (ถ้าฉันมีแถบเลื่อนที่ฉันสามารถเลื่อนได้จริงจากนั้นใช้ลำดับนี้ฉันสังเกตเห็นว่าแถบเลื่อนถูกปิดใช้งานเนื่องจากไม่มีอะไรให้เลื่อนได้ทันที แต่หน้าจอที่แสดงอยู่ในปัจจุบันยังคงอยู่)
Bavi_H

@Bavi_H: อาขอบคุณ - ฉันไม่ได้ตระหนักว่ามันจะไม่ส่งผลกระทบต่อข้อความที่แสดงในปัจจุบัน ฉันเห็นว่ามันใช้งานได้เช่นกัน clear && printf '\033[3J'วิธีการแก้ปัญหาอย่างเต็มรูปแบบที่ฉันต้องการคือ หากคุณตอบคำถามฉันจะยอมรับมัน
jwd

คำตอบ:


32

CSI 3 Jลำดับเพื่อล้างบัฟเฟอร์ scrollback ถูกบันทึกฉาบ 0.59 (ในหน้าคำขอความต้องการสำหรับคุณลักษณะนี้ให้ดูที่บรรทัด "คงที่" หรือไปที่หน้าเปลี่ยนแปลง PuTTY และค้นหาCSI 3 J)

ตามที่ jwd กล่าวไว้คุณสามารถป้อนprintf '\033[3J'บนบรรทัดคำสั่งเพื่อส่งลำดับนี้ไปยัง PuTTY ระวังสิ่งนี้เท่านั้นล้างบัฟเฟอร์เลื่อนมันไม่ได้ล้างหน้าจอ หากคุณมีแถบเลื่อนที่คุณสามารถเลื่อนได้จริงจากนั้นใช้ลำดับนี้คุณจะเห็นแถบเลื่อนถูกปิดการใช้งานเพราะไม่มีอะไรให้เลื่อนไปเลย แต่หน้าจอที่แสดงอยู่ยังคงอยู่

ตามที่ jwd กล่าวไว้คุณสามารถล้างทั้งหน้าจอและบัฟเฟอร์การเลื่อนได้ clear && printf '\033[3J'


และสำหรับผู้ที่มองหาการอ่านเบา ๆ เกี่ยวกับรหัสควบคุม: xfree86.org/4.8.0/ctlseqs.html (: อันนี้อยู่ในภายใต้CSI P s J
jwd

11

หากคุณคุ้นเคยเป็นฉันเพื่อใช้Ctrl+Lสำหรับตัวเลือกที่มีอยู่ในเมนูระบบฉาบแล้วคุณอาจพบว่าเป็นประโยชน์เพื่อเปิดใช้งาน Reset terminalConfiguration -> Window -> Behavior -> "System menu appears on ALT-Space"

จากนั้นเมื่อคุณกดปุ่มAlt+Spaceตัวเลือกสำหรับ"Clear scrollback"จะทำงานโดยL(ตัวพิมพ์เล็กไม่มีการเลื่อน) ดังนั้นจึงreset + clearกลายเป็นการผสมผสานระหว่างความจำที่มีมนต์เสน่ห์Ctrl+LและAlt+Space Lไม่มีสิ่งล่อใจหรือความยุ่งเหยิงใด ๆ ในประวัติศาสตร์เชลล์ของคุณ


ใช้งานได้ง่ายและจำได้ง่าย :)
Wyrmwood

ไม่เลวแม้ว่า FYI: คุณสามารถป้องกันประวัติเชลล์ของคุณได้โดยการเติมคำสั่งด้วยช่องว่าง
jwd

6

สร้างไฟล์สคริปต์และวางไว้ในโฟลเดอร์ที่รวมพา ธ :

$cat > /usr/local/bin/cls
#!/bin/bash
clear
printf '\033[3J'

กด CTRL + d เพื่อบันทึกและออก

เปลี่ยนการอนุญาตในไฟล์:

chmod a+x /usr/local/bin/cls

ตอนนี้คุณสามารถใช้ cmd cls :-)


1

ทางออกสำหรับฉันคือการส่งอักขระ '\ 033 \ 143':

printf ( "\ 033 \ 143");

เป็นการล้างหน้าจอเทอร์มินัลและวางเคอร์เซอร์ไว้ที่มุมบนซ้าย


1
(1) คำถามถามถึงคำสั่งบรรทัดคำสั่ง (เช่นเชลล์) นี่ไม่ใช่คำสั่งเชลล์มันเป็นบรรทัดของรหัส C; เช่นนี้มันไม่ใช่คำตอบสำหรับคำถามนี้ (2) โพสต์นี้จะมีประโยชน์มากกว่านี้เล็กน้อยถ้าคุณพูดว่า\143ตัวละครคืออะไรและเกี่ยวข้องกับคำถามนี้อย่างไรโดยอ้างอิงจากการอ้างอิง
สก็อต

1
สำหรับผู้ที่สงสัยสิ่งนี้จะสอดคล้องกับรหัสหนี "เต็มรีเซ็ต" ( ESC c) ASCII cมีค่าซึ่งเป็นฐานแปด99 143สิ่งนี้จะทำสิ่งอื่น ๆ นอกเหนือจากการล้าง scrollback เพียงแค่ FYI
jwd

1

มีตัวเลือกในสีโป๊วที่คุณสามารถยกเลิกการเลือกพฤติกรรมการเลื่อนกลับเริ่มต้น เพียงยกเลิกการเลือกตัวเลือก "Push text ที่ถูกลบไปยัง scrollback"

ภาพการตั้งค่าสีโป๊ว

หลังจากนี้เมื่อคุณออกคำสั่งที่ชัดเจนมันจะลบหน้าจอและจะไม่ใส่เนื้อหาของหน้าจอก่อนหน้าในการเลื่อนกลับ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.