ฉันจะออกจากด้านบนโดยไม่ทิ้งเอาท์พุทบนเครื่องได้อย่างไร


30

ฉันtopจะออกจากวิธีการคล้ายกับการlessออกจากที่นั่นคือไม่ทิ้งเอาท์พุทบนหน้าจอได้อย่างไร

นี่เป็นรุ่นที่ฉันมี:

procps-ng version 3.3.9

วิธีการเกี่ยวกับการใช้ทางเลือกเช่นhtop?
DarkHeart

คำตอบ:


48

เมื่อคุณเริ่มต้นเช่นนี้ ...

top && clear

... หน้าจอล้างหลังจากออกจากด้านบนด้วย q

สิ่งนี้ทำหน้าที่เหมือนless:

tput smcup ; top ; tput rmcup

( smcupเปลี่ยนเป็นหน้าจอรองที่topรันคำสั่งและเมื่อคุณออกจากtop rmcupสวิตช์กลับไปที่หน้าจอปกติ)


คุณสามารถนามแฝงคำสั่งด้านบนที่จะทำ ( ฉันจะสร้างนามแฝง Bash ถาวรได้อย่างไร )


3
clearดูเหมือนว่าจะลบทั้งหมด แต่หน้าจอสุดท้ายของ scrollback buffer เกินไป (ดังนั้นเพียงแค่ออกจากหน้าจอสุดท้ายของกรณีในด้านบน) - อย่างน้อยใน xfce4-terminal และ QTerminal tputคำตอบที่ใช้งานได้ดีโดยเฉพาะอย่างยิ่งในนามแฝงสำหรับtop
Xen2050

2
อย่าลืม Ctl + L เพื่อการแก้ไขอย่างรวดเร็ว
jpaugh

โอ้น่าสนใจ ฉันสงสัยว่าทำไมlessผลลัพธ์สุดท้ายของหายไปจากบัฟเฟอร์อย่างสมบูรณ์
การแข่งขัน Lightness กับ Monica

คำแนะนำอื่น ๆ : 1. ใช้สิ่งที่เหนือกว่า แต่ไม่ได้มีอยู่htopแล้วและ 2. นามแฝงคำสั่งด้วยกันเพื่อให้คุณไม่จำเป็นต้องเชื่อมโยงพวกเขาด้วยตนเองทุกครั้ง
flith

@flith ผมไม่ได้จะไปขโมยคำตอบที่ผู้ใช้งานอื่น ;-)
Rinzwind

31

กระแทกแดกดัน1นี้เป็นเวลาสั้น ๆtopลักษณะการทำงานของ ใน 3.3.8 topทำการล้างหน้าจอ แต่ไม่ได้อยู่ในรุ่นที่ผ่านมาหรือตั้งแต่ ดูข้อผิดพลาด Red Hat # 977561 :

การล้างหน้าจอเป็นผลทางอ้อมของการเปลี่ยนแปลงในการปรับเปลี่ยนเทอร์มินัลซึ่งได้รับการแนะนำโดยจิมวอร์เนอร์ (ผู้เขียนเครื่องมือ 'ยอดนิยม') เพื่อระงับการท่วมเครื่องมือ 'สุดยอด' ด้วยสัญญาณ SIGWINCH ฉันเป็นคนที่รายงานปัญหาน้ำท่วมและเขาพยายามทำให้ดีที่สุดเพื่อแก้ไขและออกการแก้ไขสำหรับปัญหาในรูปแบบ 8 คอมมิชชันแยกต่างหาก การคอมมิชชันที่แนะนำการล้างหน้าจอมีแฮชต่อไปนี้: 'dedaf6e1a81738ff08ee8e8523871e12f555ad6d'

เนื่องจากรายงานข้อผิดพลาดจิมจึงแก้ไขให้ไม่สามารถล้างเอาต์พุตใน 3.3.9ได้อีก

topไม่มีตัวเลือกหรือการตั้งค่าการกำหนดค่าเพื่อควบคุมสิ่งนี้ AFAICT นี่เป็นพฤติกรรมที่ฮาร์ดโค้ดทั้งหมด คุณอาจต้องการที่จะยื่นคำขอคุณสมบัติที่https://gitlab.com/procps-ng/procps/issues/

ก่อนหน้านั้นคุณสามารถแนะนำ Rinzwindclearด้วยตนเองหรือแนะนำให้ใช้เช่นเครื่องมือดึงเหล็กtput


สิ่งที่น่าสนใจความมุ่งมั่นที่กล่าวถึงข้างต้นก็มีคำอธิบายที่ดีเกี่ยวกับ command steeldriver ที่แนะนำเพราะในความเป็นจริงแล้วเหมือนกับสิ่งที่เคยทำในรหัส:

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

หลังจากทำการสืบค้นมากเราได้ค้นพบสองสตริง terminfo ซึ่งมีผลของการปิดใช้งาน / เรียกคืนบัฟเฟอร์นั้น พวกเขาถูกซ่อนอย่างดีภายใต้ชื่อของสตริง 'เพื่อเริ่ม / สิ้นสุดโปรแกรมโดยใช้ cup' ในทางกลับกัน 'คัพ' จะจัดการกับความสามารถในการระบุตำแหน่งเคอร์เซอร์ของ tty

เราไม่สนใจสิ่งที่คุณเรียกพวกเขาหรือสิ่งที่พวกเขาอ้างถึงตราบเท่าที่พวกเขาได้งานทำ และสิ่งเหล่านี้ทำจริงๆ! อย่างไรก็ตามโปรดทราบว่ามีผลข้างเคียงบางอย่างซึ่งหลายอย่างอาจถือได้ว่าเป็นประโยชน์:

  • enter_ca_mode / smcup / ti ปิดใช้งานการบัฟเฟอร์การเลื่อนกลับ (และเป็นสิ่งที่ดีมันเป็นสิ่งที่เราคาดหวังไว้เสมอ)

  • exit_ca_mode / rmcup / te เรียกคืน scrollback buffer (แต่จะคืนค่าเนื้อหาของหน้าจอที่มีอยู่ก่อนหน้า) (ซึ่งแตกต่างจากผลลัพธ์ของโปรแกรมในอดีต)

... ซึ่งสอดคล้องกับคำสั่งtput smcupและtput rmcup


1 ภาระผูกพัน xkcd


BSD ชั้นนำที่น่าสนใจ (เช่นบน MacOS) จะทำให้เครื่องล้าง
Digital Trauma

15

พฤติกรรมที่คุณกำลังมองหาจากน้อยกว่าถูกสร้างขึ้นเพื่อเป็นทางเลือกที่เรียกว่า htop คุณสามารถติดตั้งได้ด้วย:

sudo apt-get install htop

โดยเฉพาะมันจะสลับไปที่โหมดหน้าจอทางเลือกก่อนที่จะเริ่มรักษาเนื้อหาหน้าจอดั้งเดิมของคุณเมื่อคุณปิด htop นอกจากนี้ยังมีการปรับปรุงอื่น ๆ อีกมากมายเหนือกว่าของ procps เมื่อติดตั้งแล้วคุณสามารถเรียกใช้ในฐานะผู้ใช้ปกติ:

htop

Plus htopนั้นมีสีสันมากเพิ่มการรองรับเมาส์ ฯลฯ
WinEunuuchs2Unix

4

คุณสามารถใช้watch:

watch top -b

เป็นค่าเริ่มต้นที่จะอัปเดตทุก ๆ สองวินาทีใช้เช่น-n1หนึ่งวินาทีถ้าคุณต้องการเปลี่ยนพฤติกรรมนี้ จะเลิกwatchกดCtrl+ แทนปกติCQ

อีกวิธีหนึ่งคือการเปิดหน้าต่างเทอร์มินัลใหม่เช่นด้วยxterm:

xterm -e top

พฤติกรรมนี้เหมือนtopปกติปิดหน้าต่างเมื่อคุณออกtopด้วยQและแน่นอนมันจะออกผลผลิตในขั้วคุณเริ่มต้นจากไม่มี เพิ่ม&ในตอนท้ายของคำสั่งนี้เพื่อเริ่มต้นในพื้นหลังและปล่อย terminal อีกครั้งทันที


1

เมื่อคำตอบของ Rinzwind ชี้ไปที่clearคำสั่งจะล้างtopเอาต์พุตจากหน้าจอ

หลังจากออกจากtopคุณสามารถใช้Ctrl+ Lเพื่อล้างtopผลลัพธ์จากหน้าจอ แม้ว่าจะใช้คำสั่งใดก็ตามคุณยังสามารถเลื่อนหน้าจอขึ้นเพื่อดูtopเอาต์พุตเก่าได้

หากต้องการล้างหน้าจอจริงๆเพื่อให้topเอาต์พุตไม่สามารถเลื่อนกลับไปใช้resetคำสั่ง:

top && reset

ตัวเลือกอื่นเพื่อให้ "รูปลักษณ์ใหม่" ของเซสชันใหม่เอี่ยมคือการเรียกใช้ "หน้าจอเริ่มต้น ASCII" (ถ้าคุณมี) ในกรณีของฉันฉันจะเรียกใช้:

top && reset && now && screenfetch

รีเซ็ตทันที splash.png

  • nowสคริปต์ของฉันเรียกสภาพอากาศปฏิทิน ( cal) และtoiletเวลาที่น่าสนใจ
  • screenfetch วาดโลโก้ Ubuntu และสถิติเครื่อง

1
ฉันจะไม่แนะนำเรื่องการทำงาน.bashrc อย่างสม่ำเสมอโดยไม่จำเป็นเพราะมักจะมีเส้นเหมือนในแฟ้มที่และทำงานได้หลายครั้งโดยไม่จำเป็นจะขยายexport PATH=...:$PATH PATHนอกจากนี้การโทรneofetchเข้า.bashrcไม่ใช่พฤติกรรมมาตรฐาน (แม้ว่าจะดูดี) ตัวอย่างเช่นเมื่อฉันเรียกใช้อีกครั้ง.bashrcไม่มีอะไรเกิดขึ้น
PerlDuck

CTRL + L และclearทำงานไม่เหมือนกัน: ลองfor i in {1..200}; do echo "line $i"; doneในหน้าต่างใหม่สองหน้าต่างที่แตกต่างกัน จากนั้นกดปุ่มCTRL+Lใน window1 และพิมพ์clearใน window2 ตอนนี้เลื่อนกลับไปที่หน้าต่างทั้งสอง (วงล้อเมาส์) ใน - CTRL+Lหน้าต่างที่คุณสามารถเห็นทุกบรรทัด (ขึ้นอยู่กับบัฟเฟอร์เลื่อนของคุณ) ในขณะที่ใน - clearหน้าต่างคุณสามารถเลื่อนกลับหน้าจอเดียวเท่านั้น นั่นคือ: clearล้างบัฟเฟอร์การเลื่อนขณะที่CTRL+Lคล้ายกับ $ window_height คูณด้วยการกดENTER(aka newline)
PerlDuck

1
@PerlDuck neofetchการจับที่ดี screenfetchแต่มันเป็นฉันเดาอนุพันธ์ที่เรียกว่า ฉันใช้เพื่อเตือนตัวเองว่าฉันอยู่ใน Ubuntu เพราะฉันมีบูตคู่และ Windows Bash มีหน้าจอแตกต่างกัน ฉันจะเอา.bashrcการอ้างอิง สำหรับclearและCtrl+ Lจุดของฉันคือพวกเขามีความคล้ายคลึงกันว่าพวกเขาทั้งสองออกจากการtopส่งออกในบัฟเฟอร์เลื่อนกลับ
WinEunuuchs2Unix

2
.bashrcผมคิดว่าทุกคนมีสิ่งที่แตกต่างกันในพวกเขา ลองcurl wttr.in/Edmonton?0มันยอดเยี่ยม ใช้curl wttr.in/:helpเพื่อรับความช่วยเหลือ ฉันมีการโทรที่คล้ายกันใน/etc/update-motd.d/สคริปต์เล็ตดังนั้นฉันจึงได้รับแจ้งเมื่อเข้าสู่ระบบจากคอนโซลหรือ ssh (ไม่ใช่สำหรับทุกหน้าต่างเทอร์มินัล) ถ้าคุณชอบแบบนี้ให้เพิ่ม--silent --max-time 3การโทรแบบขดดังนั้นมันจะไม่ใช้เวลานานหากอินเทอร์เน็ตช้า
PerlDuck

@PerlDuck curl wttr.in/Edmonton?0เป็นสุดยอด! ขอบคุณมาก. ฉันจะพยายามที่จะบีบว่าหลังจากtoiletเวลาแสดงบนหน้าจอสแปลชของฉัน :)
WinEunuuchs2Unix
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.