ล้างเอาต์พุตเทอร์มินัลของคำสั่งสุดท้ายเท่านั้น


13

แทนที่จะเลื่อนผ่านเอาต์พุตหลายร้อยบรรทัดเพื่อดูประวัติคำสั่งก่อนหน้าเอาต์พุตของคำสั่งสุดท้ายสามารถถูกล้างออกได้หรือไม่? เช่นหลังจากดำเนินการlsล้างผลลัพธ์เพราะคุณไม่ต้องการมันอีกต่อไป

แก้ไข:

นี้ไม่ได้เป็นตามปกติของคุณclearหรือctrl+Lการดำเนินงาน แนวคิดคือการเลื่อนย้อนกลับแม้ว่าประวัติจะมองหาเอาต์พุตของคำสั่งก่อนหน้า แต่ไม่จำเป็นต้องเลื่อนผ่านการโหลดlsหรือcatหรือsudo apt-get installเอาต์พุตจนกว่าฉันต้องการ อาจมีลักษณะเช่นนี้:

cat fileIWantToRemember
ls directoryIWantToForget
# some command that wipes the output of ls
# scroll back to see the output of cat immediately

คุณหมายถึงการล้างเอาต์พุตหรือลบคำสั่งออกจากประวัติคำสั่งของคุณหรือไม่? หากคุณต้องการแก้ไขประวัติคำสั่งของคุณเธรดนี้อาจระบุสิ่งที่คุณต้องการ
ernie

เทอร์มินัลเพิ่งแสดงสตรีมข้อความและเก็บไว้ในบัฟเฟอร์ภายในของมันเอง มันไม่มีทางรู้หรือแบ่งแยกระหว่างเอาต์พุตคำสั่ง เทอร์มินัล rxvt-unicode มีตัวแปลภาษา perl ที่อาจนำไปใช้บางอย่างเช่นนี้ แต่เท่าที่ฉันรู้มันไม่ได้ทำ
Keith

นานมาแล้วฉันใช้เทอร์มินัลอีมูเลเตอร์บน Mac OS X ซึ่งมีคุณสมบัตินี้ แต่ฉันจำไม่ได้ว่ามันเรียกอะไรอีกแล้ว แม้ว่ามันจะไม่ฟรีก็ตาม อย่างไรก็ตามในขณะที่ทำการค้นหา google อย่างรวดเร็วฉันพบกับfinalterm.orgซึ่งดูเหมือนว่ากำลังพยายามใช้คุณลักษณะนั้น อย่างไรก็ตาม "Final Term นั้นมีการพัฒนาอย่างหนักและไม่เสถียรและไม่สมบูรณ์!" ดังนั้นฉันจึงไม่ลอง ดูน่าสนใจ แต่ การค้นหาของ Google สำหรับสิ่งที่คุ้มค่าเป็นterminal emulator output folding
RICI

Final Term นั้นพัฒนามามากพอที่จะพับคำสั่ง (และสิ่งที่น่าอัศจรรย์อื่น ๆ อีกมากมาย) และเมื่อมีแป้นพิมพ์ลัดที่ต้องทำ ฉันเริ่มที่จะคิดว่าฉันบ้า ...
nacnudus

1
มันไม่ใช่คำตอบที่แน่นอนของคุณ แต่ในกรณีเช่นนี้เพื่อดูเนื้อหาของไฟล์ขนาดใหญ่ฉันใช้คำสั่ง 'less' แทน 'cat' อีกอย่างคือถ้าคำสั่งใดให้บรรทัดจำนวนมากเป็นเอาต์พุตไปยังคอนโซลคุณสามารถหลีกเลี่ยงได้โดยการเขียน "$ the-command | less"
Devasish

คำตอบ:


4

ด้วย @rici ต้องขอบคุณพฤติกรรมนี้สามารถเรียกได้ว่า "folding" เอาต์พุตของคำสั่งไม่ได้ถูกลืม แต่คุณสามารถซ่อนได้จนกว่าคุณจะต้องการมันอีกครั้ง การพับเป็นเรื่องธรรมดาในโปรแกรมแก้ไขข้อความ แต่ดูเหมือนจะไม่ค่อยพบในเทอร์มินัลอีมูเลเตอร์

Final Termเป็นเทอร์มินัลอีมูเลเตอร์ใหม่ที่รวมการพับไว้ในเทคนิคพิเศษอื่น ๆ ระวัง: "วาระสุดท้ายอยู่ในการพัฒนาอย่างหนักและไม่เสถียรหรือไม่สมบูรณ์!" มันได้รับการพัฒนาอย่างหนักพอที่จะพับคำสั่งของฉันเมื่อฉันทดสอบ แต่ก็ไม่เสถียรจนไม่ผิดพลาด หนึ่งในการรับชม


0

ฉันคิดว่าคุณกำลังมองหาคำสั่งที่ชัดเจน ...

clear

"clear" ล้างคำสั่งสุดท้ายของคุณจากการดู คุณสามารถเลื่อนขึ้นในเทอร์มินัลเพื่อดูอีกครั้งหากจำเป็น


จุดคือไม่ต้องเลื่อนผ่านเมื่อมองผ่านประวัติของคุณสำหรับสิ่งอื่น
nacnudus

คุณหมายถึงคุณต้องการที่จะระงับการส่งออกจากคำสั่งหรือไม่? ถ้าใช่สิ่งนี้อาจช่วยคุณได้: stackoverflow.com/questions/617182/…
phe0113

2
เยี่ยมมากถ้าฉันไม่ต้องการเห็นผลลัพธ์ ฉันต้องการที่จะเห็นผลลัพธ์ในครั้งแรกแล้วลืมมัน ดังนั้นในตัวอย่างที่ฉันให้ฉันต้องการตรวจสอบผลลัพธ์lsด้วยเหตุผลบางอย่าง แต่จากนั้นฉันต้องการกำจัดมันเพื่อที่ฉันจะได้ไม่ต้องเลื่อนผ่านมันเพื่อหาผลลัพธ์ของแมว เห็นได้ชัดว่าฉันสามารถทำแมวอีกครั้ง แต่ฉันสามารถจินตนาการต้องการที่จะรักษาลำดับของคำสั่งและมันจะดีไม่ต้องทำซ้ำพวกเขาทั้งหมด
nacnudus

0

ใน bash คุณสามารถกดทางลัดCtrl + Lเพื่อล้างหน้าจอคล้ายกับclearคำสั่ง ( http://ss64.com/bash/syntax-keyboard.html )

หรือคุณสามารถใช้history | tail -3เพื่อดูคำสั่งสามคำสั่งล่าสุด ( http://www.howtogeek.com/howto/44997/how-to-use-bash-history-to-improve-your-command-line-productivity/ )


ดูความคิดเห็นของฉันที่ @Justin ด้านล่างจุดนี้ไม่จำเป็นต้องเลื่อนผ่านเมื่อมองผ่านประวัติศาสตร์เพื่อหาสิ่งอื่น บางสิ่งบางอย่างเช่นHISTCONTROL=ignorespaceในลิงค์ที่สองของคุณที่คุณสามารถใช้ได้หลังจากความจริงแล้วจะดี
nacnudus

ฉันหลงทางไปเล็กน้อยในสิ่งที่คุณต้องการบรรลุ อีกความคิดหนึ่งในคอนโซลที่ฉันใช้บ่อยครั้งคุณสามารถใช้ปุ่มลูกศรเพื่อเรียกดูประวัติการคำสั่งเป็น bash สิ่งนี้นำไปใช้กับสถานการณ์ของคุณหรือไม่?
phe0113

การแก้ไขของฉันทำให้คำถามชัดเจนขึ้นหรือไม่
nacnudus

@nacnudus ใช่ฉันได้รับคะแนนของคุณตอนนี้ :)
phe0113

0

ดูเหมือนว่าคุณต้องการลบรายการออกจากประวัติของคุณ ในการทำสิ่งนี้คุณต้องเปิดใช้งานการเขียนประวัติทันทีแทนที่จะออกจากระบบโดยการแก้ไข ~ / .bashrc ของคุณและเพิ่ม:

shopt -s histappend; export PROMPT_COMMAND='history -a';'

จากนั้นหากต้องการลบรายการที่คุณสามารถทำได้:

history -d offsetโดยที่ offset เป็นรายการประวัติที่คุณต้องการลบ

ขึ้นอยู่กับหัวข้อฟอรั่มนี้


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