เมื่อเราใช้clear
คำสั่งหรือCtrl+ Lในเทอร์มินัลมันจะทำการล้างเทอร์มินัล แต่เรายังสามารถเลื่อนกลับเพื่อดูคำสั่งที่ใช้ล่าสุด มีวิธีล้างเทอร์มินัลอย่างสมบูรณ์หรือไม่?
เมื่อเราใช้clear
คำสั่งหรือCtrl+ Lในเทอร์มินัลมันจะทำการล้างเทอร์มินัล แต่เรายังสามารถเลื่อนกลับเพื่อดูคำสั่งที่ใช้ล่าสุด มีวิธีล้างเทอร์มินัลอย่างสมบูรณ์หรือไม่?
คำตอบ:
tput reset
คุณสามารถใช้
นอกจากนี้reset
และtput reset
คุณสามารถใช้เชลล์สคริปต์ต่อไปนี้
#!/bin/sh
echo -e \\033c
สิ่งนี้จะส่งอักขระควบคุมEsc-C
ไปยังคอนโซลซึ่งรีเซ็ตเทอร์มินัล
คำหลักของ Google: ลำดับการควบคุมคอนโซลของ Linux
man console_codes
พูดว่า:
ลำดับ ESC c ทำให้การรีเซ็ตเทอร์มินัลซึ่งเป็นสิ่งที่คุณต้องการหากหน้าจออ่านไม่ออก "echo ^ V ^ O" ที่แนะนำมักจะทำให้ปัจจุบันเป็น G0 เท่านั้น แต่ไม่มีการรับประกันว่าคะแนน G0 ที่โต๊ะ a) ในบางดิสทริบิวชันจะมีการรีเซ็ตโปรแกรม (1) ซึ่งทำหน้าที่ "echo ^ [c" หากรายการ terminfo ของคุณสำหรับคอนโซลถูกต้อง (และมีรายการ rs1 = \ Ec) ดังนั้น "tput reset" ก็จะทำงานเช่นกัน
tput reset
เร็วกว่าreset
ใน Ubuntu 16.04 อย่างน้อย
คุณสามารถใช้reset
คำสั่งที่จะรีเซ็ตการตั้งค่าขั้ว
ฉันรู้ว่าคุณอยู่ใน terminal gnome แต่ฉันคิดว่าฉันจะตอบด้วยเคล็ดลับสำหรับคนอื่น ๆ ที่อาจจะ (เช่นฉัน) บน Mac:
หากคุณกำลังใช้Terminal.app
หรือiTerm.app
แล้วControl+L
จะเลื่อนขึ้นเพื่อให้ขั้วดูเหมือนว่างเปล่า แต่Cmd+K
จริงจะตั้งสถานี / ชัดเจนเลื่อนกลับ
หรือหากคุณสามารถตั้งค่าแป้นพิมพ์สำหรับเครื่องเทอร์มินัลของคุณคุณอาจสามารถกำหนดสิ่งที่ต้องการCtrl+K
ป้อนข้อมูลecho -e \\033c
ตามที่กล่าวไว้ข้างต้น
Cmd+K
คือทั้งหมดที่ฉันต้องการ ty
คำตอบของ Anthon นั้นใช้งานได้ใน KDE Konsole แต่ไม่ใช่ urxvt ใน urxvt ฉันใช้การรีเซ็ตเป็นเวลาสองสามปีเพื่อล้าง scrollback (รวมถึงสิ่งอื่น ๆ ทั้งหมดที่ทำ) และไม่พอใจว่ามันไม่ทำงานใน Konsole ดังนั้นสำหรับ Linux ฉันมีนามแฝงใหม่:
alias allclear='clear; echo -e "\033c\e[3J"'
แต่มันไม่ทำงานบน OS X
tput reset
ไม่ทำงานในบริบท AFAICT ใด ๆ
ใน KDE Konsole ctrl- shift- kลบการเลื่อนกลับ (รวมถึงพรอมต์เชลล์ปัจจุบันดังนั้นจึงว่างเปล่า) ใน iTerm หรือเทอร์มินัลของ Apple ใน OS X cmd- shift- kยังล้าง scrollback หากต้องการเพิ่มคุณสมบัตินี้ไปยัง urxvt ให้เพิ่มคุณลักษณะนี้ลงใน ~ / .Xresources:
urxvt*keysym.C-S-K: command:\033c
allclear(){
`echo 'การล้างเทอร์มินัลและ scrollback ... " `` sleep 1.5`' clear; echo -e "\ 033c \ e [3J" ` }
` แก้ไข: ไม่สามารถฟอร์แมตเพื่อให้ทำงานได้ หากใครสามารถแก้ไขได้เพื่อให้สามารถอ่านได้ฉันจะขอบคุณมัน
ฉันพบสิ่งนี้เมื่อหลายปีก่อนและทำงานได้ดีสำหรับฉัน มันล้างเทอร์มินัลอย่างสมบูรณ์โดยไม่มีประวัติการเลื่อน
echo -e "\e[3J"
ฉันแมปF12เพื่อล้างหน้าจอในแต่ละเปลือกหอยดังต่อไปนี้: ทุบตี , cshและเปลือกปลา คำสั่งของฉันแตกต่างจากคำสั่งก่อนหน้านี้ทั้งหมดเพราะมันจะรักษาสิ่งที่คุณได้พิมพ์ลงไปในบรรทัดปัจจุบัน
(หมายเหตุ: การกำหนดค่าทั้งหมดด้านล่างนี้ขึ้นอยู่กับเทอร์มินัล แต่ฉันหวังว่าพวกเขาจะทำงานได้ทุกที่)
เปิดไฟล์~/.inputrc
และแทรกบรรทัดต่อไปนี้:
"\e[24~": "\C-k \C-uecho -ne '\\ec\\e[3J'; history -d $((HISTCMD-1))\n\C-y\C-?"
หากต้องการให้มีการเชื่อมโยงคีย์ใหม่ให้เปิดเทอร์มินัลใหม่หรือพิมพ์Ctrl+ Xจากนั้นCtrl+ Rเพื่อโหลดไฟล์. inputrc ในเทอร์มินัลปัจจุบัน
คำอธิบาย
ไฟล์ ~ / .inputrc ควบคุมการเชื่อมโยงคีย์ของเทอร์มินัล bash
เกี่ยวกับสาย:
"\e[24~"
F12C-k
( Ctrl+ X) ล้างฆ่าแหวน (หน่วยความจำทุบตีของการคัดลอกและที่ผ่านมา)C-u
( Ctrl+ U) ส่งบรรทัดปัจจุบันไปยัง kill-ring และลบออกecho -ne '\\ec\\e[3J'; history -d $((HISTCMD-1))\n
ส่งคำสั่งที่สองจัดกลุ่มไปยังสถานี พวกเขาจะถูกคั่นด้วยและยกเลิกโดย
;
\n
echo -ne '\\ec\\e[3J'
ล้างหน้าจอhistory -d $((HISTCMD-1))
หลีกเลี่ยงสองคำสั่งเหล่านี้เข้ามาในประวัติศาสตร์C-y
( Ctrl+ Y) วางฆ่าแหวนที่เก็บไว้โดยC-u
คำสั่งC-?
( Ctrl+ ?) เทียบเท่ากับBackspaceและลบพื้นที่ที่แทรกอยู่ในขั้นตอนที่ 3อ้างอิง:
พิมพ์คำสั่งร้อง
bindkey -c "^[[24~" "echo -ne '\ec\e[3J'"
นอกจากนี้ยังสามารถแทรกใน.cshrc
ไฟล์ของคุณเพื่อโหลดการเชื่อมโยงคีย์กับเทอร์มินัลใหม่ทุกเครื่อง
(ใช่มันง่ายกว่าทุบตีมาก)
พิมพ์คำสั่งร้อง
bind -k f12 "echo -ne '\ec\e[3J'; commandline -f repaint"
คุณสามารถแก้ไขและบันทึกฟังก์ชันfish_user_key_bindings
เพื่อโหลดการเชื่อมโยงคีย์ไปยังเทอร์มินัลใหม่ทุกแห่ง
(ใช่มันง่ายกว่าทุบตีมาก)
[Ubuntu 16.04]
.bash_history ไฟล์จะถูกสร้างขึ้นในไดเรกทอรีบ้านของผู้ใช้เมื่อสถานีถูกปิด
มันมีประโยชน์ แต่คุณสามารถลบได้ถ้าต้องการ .. อย่างไรก็ตามมันจะถูกสร้างขึ้นทุกครั้งที่คุณใช้เทอร์มินัล
คุณสามารถลบได้ด้วยตนเองจาก:
ไฟล์เบราว์เซอร์ของคุณ
เทอร์มินัล: โปรดจำไว้ว่าไฟล์. bash_history ใหม่จะถูกสร้างขึ้นเมื่อคุณปิดเทอร์มินัล (ตามการกำหนดค่าเริ่มต้น)
หรือคุณสามารถเรียกใช้ฟังก์ชั่นที่กำหนดเองได้หากคุณบันทึกการใช้งานที่คุณต้องการลงในไฟล์ที่เชื่อมโยงจาก bashrc .. คุณสามารถแก้ไข bashrc ได้เองหากคุณต้องการวางรหัสไว้ที่นั่น แต่ตัวอย่างถัดไปอยู่ในไฟล์แยกต่างหาก
สุจริตนี้ไม่มีประโยชน์สำหรับฉัน แต่ถ้าคุณต้องการที่จะลบประวัติคำสั่งก่อนออกคุณสามารถทำได้:
.bash_custom # นี่คือไฟล์ที่กำหนดเองของฉัน
blotout() {
HISTSIZE=0
rm $HOME/.bash_history
exit
}
จากนั้นที่ด้านล่างของเพิ่มชื่อและเส้นทางของไฟล์ของฉัน.
bashrc # นี่คือไฟล์กำหนดค่าสำหรับ bash (ฉันคิดว่า)
# existent code
#...
#..
# import user customizations
source $HOME/.bash_custom
และนั่นคือทั้งหมด
แต่เพื่อทำสิ่งที่คุณต้องการเพียงแค่คุณต้องการฟังก์ชั่นนี้ในไฟล์ที่คุณกำหนดเองและเชื่อมโยงมัน:
refresh() {
tput reset
H=HISTSIZE
HISTSIZE=0
HISTSIZE=H
}
หรือเพียงแค่ใส่ฟังก์ชั่นใน. bashrc หากคุณต้องการ แต่วิธีที่คุณอาจต้องการคำสั่งส่งออกหลังจากฟังก์ชั่นฉันไม่แน่ใจและหากไฟล์นั้นได้รับการอัพเดตอาจทำให้ฟังก์ชั่นของคุณหายไป .. ฉันก็ไม่แน่ใจเช่นกัน: ง.
จำไว้ว่าคุณต้องเริ่มต้นเทอร์มินัลใหม่เมื่อแก้ไขไฟล์. bashrc หรือไฟล์ 'กำหนดเอง' ของคุณ
สำหรับฉันการใช้ PuTTY เทียบกับ CentOS 7 จะปล่อยเฉพาะคำสั่ง clear ใน scrollback แต่รัน "clear && clear" ซึ่งเป็นคำสั่ง clear สองกรณีในเวลาเดียวกันเคลียร์ scrollback และทำให้ฉันไม่มี scrollbar ลองดู มันเป็นทางออกที่แปลก แต่ไม่มีสิ่งใดในที่นี้ที่ลบล้าง scrollback อย่างมีประสิทธิภาพและสิ่งนี้ทำได้
เพิ่มไป~/.inputrc
ยังผูกการล้างที่สมบูรณ์ไปที่F12:
"\e[24~":'!echo -ne \047\\0033\\0143\047\r'
ใน Fedora 30 การลบประวัติทำได้โดยการลบไฟล์ $ HOME / .bash_history วิธีที่ง่ายที่สุดในการล้างไฟล์ประวัติเทอร์มินัลผ่านแป้นพิมพ์คือ:
nautilus
และกดEnterปุ่มเพื่อเปิดแอปพลิเคชันไฟล์ (GNOME) (ซึ่งก่อนหน้านี้รู้จักกันในชื่อ Nautilus).bash_history
(ซึ่งควรปรากฏในแถบค้นหาหากพิมพ์ทันทีหลังจากเปิดหน้าต่างไม่เช่นนั้นแถบค้นหาจะสามารถเข้าถึงได้ผ่านCtrl+ L)cat /dev/null > ~/.bash_history && history -c && exit
history -c
ได้รับการนำเสนอในสองคำตอบก่อนหน้านี้และพวกเขาถูกลบเพราะไม่ได้คำตอบที่ถูกต้องสำหรับคำถาม (2) ในขณะที่ปิดหน้าต่างเทอร์มินัลจะ (อาจ) ลบหน่วยความจำของเทอร์มินัลของคำสั่งก่อนหน้ามันไกลจากที่ชัดเจนว่า OP ต้องการทำเช่นนั้น …และ PS exit
คำสั่งเดียวไม่รับประกันว่าจะปิดหน้าต่างเทอร์มินัล