วิธีล้างเทอร์มินัลจริง ๆ ?


385

ฉันสามารถออกclearคำสั่งหรือกดCtrl+ Lเพื่อล้างเทอร์มินัล Ubuntu ปัจจุบัน แต่นี่แค่เลื่อนเอาต์พุตก่อนหน้าขึ้นไปและถ้าคุณใช้การเลื่อนเมาส์หรือปุ่มPgUPและPgDownมันยากที่จะแยกแยะว่าการเริ่มต้นคำสั่งก่อนหน้าสิ้นสุดลง

มีวิธีล้างเทอร์มินัลจริง ๆ หรือไม่ดังนั้นฉันจะไม่เห็นผลลัพธ์คำสั่งก่อนหน้า?


11
กด Ctrl + L สองครั้งแล้วคุณจะว่าง!
Pandya

คำตอบ:


456

ใช่คำสั่งที่คุณต้องการคือ

reset

ในทางตรงกันข้ามกับclearหรือCtrl+ L, resetจริงจะ re-initialise สมบูรณ์ขั้วแทนเพียงแค่ล้างหน้าจอ อย่างไรก็ตามมันจะไม่ยกตัวอย่างเชลล์ (ทุบตี) นั่นหมายความว่าสถานะของ bash นั้นเหมือนกับเมื่อก่อนเหมือนกับว่าคุณแค่ล้างหน้าจอ

ตามที่ @Wallacoloo กล่าวถึงในความคิดเห็นคำสั่งนี้ควรทำสิ่งเดียวกันเร็วขึ้น:

tput reset

จากคำตอบอื่น ๆ :

  • คุณสามารถตั้งค่าแป้นพิมพ์ลัดเพื่อresetterminal, เป็นอธิบายโดย towolf

  • หากคุณใช้Kubuntuและเทอร์มินัลของคุณคือ Konsole คุณจะต้องไปที่Edit → Clear historyเนื่องจากresetไม่ได้ผลเหมือนกับที่UncleZeiv บันทึกไว้


9
อาจไม่สำคัญสำหรับผู้ใช้ส่วนใหญ่ แต่พฤติกรรมของresetขึ้นอยู่กับเทอร์มินัล
cthom06

2
ส่วนตัวผมไม่ทราบว่าสิ่งที่เหลืออยู่ "ขึ้น" พร้อม scroller ^Lเมื่อฉันตี ฉันไม่เห็น (นั่นคือสิ่งที่ฉันต้องการ!) ฉันไม่รู้สึกและถ้าจู่ ๆ ฉันจะต้องคืนสิ่งที่มี - ไม่มีปัญหา resetในทางตรงกันข้ามเป็นเครื่องมือที่ยากกว่ามาก - ฉันจะใช้มันเมื่อมีบางอย่างผิดปกติกับเทอร์มินัลเช่นเมื่อลำดับการหลบหนีแปลก ๆ ทำให้จอแสดงผลเสียหายโดยไม่ตั้งใจ
ulidtko

14
@ulidtko: มันสำคัญเมื่อคุณเรียกใช้เซสชันที่ต่อเนื่องกันของโปรแกรมที่มีเอาต์พุตเป็นตัน หากคุณเลื่อนกลับไปเป็นเรื่องง่ายที่จะสับสนว่าการประมวลผลแบบใดที่พิมพ์ออกมา ฉันรู้ดีอย่างสมบูรณ์แบบว่าสามารถใช้วิธีแก้ปัญหาที่ซับซ้อนมากขึ้นในกรณีเหล่านี้ แต่ถึงกระนั้นก็เป็นสถานการณ์ที่เกิดขึ้นบ่อยครั้งในเซสชันการดีบักที่รวดเร็วและสกปรก
UncleZeiv

7
นอกจากนี้ยังมีtput resetสิ่งที่เห็นได้ชัดว่าทำสิ่งเดียวกัน แต่เสร็จสมบูรณ์ทันที (ในขณะที่resetอาจใช้เวลาประมาณ 2 วินาทีก่อนที่จะปรากฏขึ้นอีกครั้งพร้อมท์)
Ponkadoodle

1
นี่ทำให้หน้าต่าง putty.exe ของฉันปรับขนาดน่าจะดีถ้าไม่มีสิ่งนั้นเกิดขึ้น
void.pointer

100

ฉันกำลังค้นหาสิ่งนี้อยู่พักหนึ่งแล้วก็พบอัจฉริยะที่โพสต์สิ่งนี้:

clear && printf '\e[3J'

ล้างบัฟเฟอร์หน้าจอทั้งหมดสะอาดมาก ทำงานบน OS X และเชื่อว่าทำงานได้ดีบนเทอร์มินัล * nix ส่วนใหญ่

สำหรับความอยากรู้ส่วน'\e[3J'นี้เป็นคำสั่งหนีขั้ว


2
อืมทำงานใน xterm, Konsole และ Linux VT แต่ไม่ได้ในคำพังเพยขั้ว ...
Ruslan

1
ขอบคุณใช้งานได้ดีกับ Mac ของฉัน - ฉันพลาดสไตล์ Bash จริงreset
JohnnyCoder

9
ขอบคุณนั่นมีประโยชน์มาก! อะไรprintf '\e[3J'หมายความว่าอย่างไร มันทำความสะอาดบัฟเฟอร์ได้อย่างไร
Filip Spiridonov

4
ระวังนามแฝงreset- ทำมากกว่าล้างข้อมูลเทอร์มินัล ตัวอย่างเช่นหากคุณพิมพ์ไฟล์ไบนารี่โดยบังเอิญด้วยขยะแบบสุ่มที่ทำลายเทอร์มินัล (เช่นปิดใช้งานการแสดงอักขระที่พิมพ์) resetสามารถแก้ไขได้ แน่นอนว่าการใช้นามแฝงนั้นใช้ได้ตราบใดที่คุณทราบวิธี\overrideการใช้คำสั่ง alias-shadowed
RubyTuesdayDONO

4
นี่เป็นคำตอบเดียวที่ทำงานเพื่อล้าง Putty scrollback เมื่อเข้าถึง SSH บางส่วนผ่าน Winders
dhaupin

45

นอกจากนี้คุณยังสามารถกำหนดทางลัดใน gnome-ขั้วโดยไปที่แก้ไข→แป้นพิมพ์ลัด ผมใช้Shift+ Ctrl+ +AltC

รีเซ็ตและทางลัดที่ชัดเจน


+1 ฉันมีแถบเมนูซ่อนอยู่เสมอ; ดังนั้นแม้จะผ่านไปหลายปีและหลายปีในการใช้คำพังเพยฉันก็ไม่เคยคิดที่จะมองหาสิ่งนี้ ขอบคุณ :-)
Stefano Palazzo

3
“ รีเซ็ต” ไม่ทำอะไรเลยสำหรับฉันและ“ รีเซ็ตและล้าง” ล้างทุกอย่าง แต่ไม่แสดงพรอมต์ รายการเมนูเหล่านี้ไม่ทำงานเหมือนคำสั่ง“ รีเซ็ต” จากเทอร์มินัล
Hibou57

ดังที่ @ Hibou57 พูดว่าแป้นพิมพ์ลัดของฉันสำหรับ "รีเซ็ต" ดูเหมือนจะไม่ทำอะไรเลย ฟังก์ชั่นนี้ใช้งานไม่ได้ใน 14.04?
Michael Martin-Smucker

“ ฟังก์ชั่นนี้ใช้งานไม่ได้ใน 14.04 หรือไม่?”: นี่คือสิ่งเดียวกันกับ 12.04
Hibou57

1
@ Hibou57 "รีเซ็ตและล้าง" ไม่คาดว่าจะแสดงพรอมต์อีกครั้ง แต่ถ้าคุณกด Enter หลังจากนั้นควรจะแสดงพร้อมท์อีกครั้ง มันเหมาะกับคุณหรือไม่?
Don Hatch

19

ข้ามการโพสต์คำตอบของฉันจากStackOverflow

ใช้คำสั่งต่อไปนี้เพื่อทำหน้าจอที่ชัดเจนแทนที่จะเพิ่มเพียงบรรทัดใหม่ ...

printf "\033c"

ใช่นั่นคือ 'printf' บน bash prompt

คุณอาจต้องการกำหนดนามแฝงว่า ...

alias cls='printf "\033c"'

คำอธิบาย

\033 == \x1B == 27 == ESC

ดังนั้นสิ่งนี้จึงกลาย<ESC>cเป็นรหัสหลบหนี VT100 สำหรับรีเซ็ตเทอร์มินัล นี่คือข้อมูลเพิ่มเติมบางอย่างเกี่ยวกับรหัสการหลบหนีของเทอร์มินัล

แก้ไข

นี่คือวิธีอื่น ๆ ในการทำ ...

printf "\ec" #\e is ESC in bash
echo -en "\ec" #thanks @Jonathon Reinhart.
# -e    Enable interpretation of of backslash escapes
# -n    Do not output a new line

KDE

ด้านบนไม่ทำงานบนคอนโซล KDE (เรียกว่า Konsole) แต่มีความหวัง! ใช้ลำดับคำสั่งต่อไปนี้เพื่อล้างหน้าจอและบัฟเฟอร์การเลื่อนกลับ ...

clear && echo -en "\e[3J"

หรืออาจใช้นามแฝงต่อไปนี้ใน KDE ...

alias cls='clear && echo -en "\e[3J"'

ผมได้เลื่อนกลับมาล้างคำสั่งจากที่นี่


18

เรียกใช้คำสั่งนี้:

reset

สิ่งนี้มีผลเช่นเดียวกับการเปิดตัวเทอร์มินัลใหม่


6
เมื่อใช้ผงสำหรับอุดรูหลังจากทำงานresetฉันยังสามารถเลื่อนขึ้นและดูสิ่งก่อนหน้าได้ นี่เป็นปัญหาของ PuTTY มากกว่าresetหรือไม่
Svish

@svish - นั่นเป็นเพียงปัญหาการตัดสินใจใช้สีโป๊วหรือการตัดสินใจ
belacqua

@jgbelacqua ข้อเสนอสุดพิเศษ :)
Svish

ทำงานกับเทอร์มินัล MAC OS
Bira

2
@Bira resetไม่ไม่ล้าง scrollback บน macOS 10.14 Mojave คุณสามารถลองseq 100; resetดู scrollback ที่นั่น บนจอเทอร์มินัล macOS Cmd+Kสามารถล้างหน้าจอและเลื่อนกลับ
Johnny Wong

8

printf "\ec"ที่ฉันชอบคือ นอกจากนี้ยังสามารถเป็นหรือprintf "\033c" printf "\x1bc"นั่นคือลำดับการหลบหนีแบบ ansi ที่ล้างหน้าจอและบัฟเฟอร์สำหรับเอาต์พุตเทอร์มินัลอย่างน่าอัศจรรย์ (สำหรับเทอร์มินัลมาตรฐานส่วนใหญ่ที่ฉันทำงานด้วยดูเหมือนว่า - ฉันรู้ว่ามันทำงานได้เช่น gnome-terminal, terminator, xterm เป็นต้น Linuxes)

ฉันรู้ว่างานนี้ในลินุกซ์มิ้นท์และ Ubuntu 14.04 ดังนั้นผมจึงไม่ทราบว่าทำไมผู้คนกำลังผนวกและ prepedning clear && echo -ne "\033cสิ่งที่ต้องการ printf "\ec"ได้ผลเสมอสำหรับฉัน

นอกจากนี้ในฉัน.bashrcฉันมีผลผูกพันเช่นนี้:

bind -x '"\C-t": printf "\ec"';

ตอนนี้ฉันกดctrltตลอดเวลา


คุณรู้หรือไม่ว่าจะสร้างแผนที่ได้อย่างไรโดยใช้ปุ่ม Windows ตัวอย่างนี้ยอดเยี่ยมมากทำงานเหมือนกับ Command-K บน mac ขอขอบคุณ.
Niloct

@ ไม่ทราบคุณสามารถดูได้ว่าเทอร์มินัลรองรับด้วยxevหรือไม่ (เพียงพิมพ์xevเทอร์มินัลภายใน x-session) จากสิ่งที่ฉันสามารถบอกได้ urxvt ไม่สนับสนุน ในขณะที่ฉันไม่ได้ลองใช้ tty ฉันมั่นใจว่ามันจะไม่ได้รับการสนับสนุน ฉันยังสงสัยว่า xterm หรือ gnome-terminal จะรองรับสิ่งนี้ มันยุ่งยากกับการหลบหนี ไชโยและขออภัยที่ตอบช้า
dylnmc

เอาล่ะ @dylnmc ฉันขอขอบคุณมัน ขอบคุณสำหรับความคิดเห็น
Niloct

5

มันขึ้นอยู่กับว่าหากคุณใช้Konsoleอินสแตนซ์ถึงแม้resetจะไม่ได้ป้องกันให้คุณเลื่อนผ่านบรรทัดแรก ในกรณีนี้คุณต้องใช้คุณสมบัติบางอย่างของเครื่องปลายทางที่คุณใช้งานอยู่ สำหรับมันKonsoleEdit > Clear History


3

ฉันได้พบสิ่งต่อไปนี้เพื่อให้ประสบความสำเร็จกับ Kubuntu:

alias clc="echo -en '\033c\033[3J'"

คุณสามารถใช้clsเพื่อรักษาประเพณี Windows ใช้รุ่น Matlab clcหรือของคุณเอง โชคดี!


2

อีกวิธีหนึ่งresetคือคุณสามารถทำecho -e "\033c"หรือมีใน.bashrcสิ่งที่คุณชอบalias cls="echo -ne '\033c'"

UNIX / Linux StackExchange มีเธรดเกี่ยวกับเรื่องนี้: จะล้างเทอร์มินัลได้อย่างไร? (unix.stackexchange.com)เช่นเดียวกับ SuperUser: ขั้วล้างทางลัดโดยใช้แป้นพิมพ์ (superuser.com)


2

อีกทางเลือกหนึ่งสำหรับคำตอบ @ Hibou57:

# The Octal Way
alias clear="echo -e '\033c\c'"

หรือ

# The Hex Way
alias clear="echo -e '\x1b\c'"

โดยทั่วไปสิ่งนี้จะมีผลเหมือนกันอย่างแน่นอนมันจะพิมพ์^[ตัวอักษร (ซึ่งจะล้างเทอร์มินัลของคุณ) และจะไม่ส่งออกบรรทัดใหม่ต่อท้าย


การแก้ไขเล็กน้อย: มันพิมพ์^[ตัวอักษร (ESC) ตามด้วยcตัวอักษรไม่ได้เป็นเพียง^[ตัวอักษรเพียงอย่างเดียว รวมจำนวนเหล่านี้เป็นรหัสเทอร์มินัล "RIS" ซึ่งทำให้เกิดการรีเซ็ต ข้อมูลเพิ่มเติม: xfree86.org/4.8.0/ctlseqs.html
jwd

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