เลื่อนด้านในหน้าจอหรือหยุดชั่วคราว


383

ฉันใช้หน้าจอสำหรับงานบรรทัดคำสั่งของฉันในขณะที่จัดการเซิร์ฟเวอร์ที่ฉันทำงาน ฉันมักจะใช้คำสั่งขนาดเล็ก (ส่วนใหญ่เป็นงานระบบไฟล์) แต่บางครั้งฉันก็ใช้งานที่กว้างขวางมากขึ้น (เช่น DBA)

ผลผลิตของงานเหล่านั้นเป็นสิ่งที่สำคัญกับผม เนื่องจากฉันใช้ Ubuntu และ OS X (ทั้ง Terminal Windows) สำหรับงานของฉัน แต่ฉันต้องใช้หน้าจอการเลื่อนจึงไม่สามารถใช้งานได้ดังนั้นผลลัพธ์ที่ยาวนาน (คิดว่าตาราง 500 แถวจากตัวเลือก) มองไม่เห็นสำหรับฉัน ล้อเลื่อนของเมาส์ไม่ตอบคำถาม

เมื่อฉันพูดว่า "scroll ไม่ปรากฏสำหรับฉันฉันหมายถึงสิ่งนี้:

ด้านบนขณะที่ใช้หน้าจอใน Mac OS X ในขณะที่เลื่อน

ฉันกำลังคิดเกี่ยวกับสองตัวเลือก:

  1. หยุดชั่วคราว (คิดเลขหน้า ) เอาต์พุตของคำสั่งที่แน่นอน เมื่อเอาต์พุตเริ่มขึ้นฉันจะอ่านว่าเกิดอะไรขึ้นจากนั้นฉันกด "Enter" จากนั้นเอาต์พุตจะดำเนินต่อไปจนกว่าจะไม่มีอะไรแสดงอีก

  2. เลื่อนหน้าจอภายใน แต่ฉันไม่รู้ว่ามันเป็นไปได้ไหม

แน่นอนผมไม่ทราบว่าตัวเลือกเหล่านั้นเป็นจริงที่เป็นไปได้ หากเป็นเช่นนั้นจะทำให้สำเร็จได้อย่างไร ทางเลือกอื่น ๆ จะได้รับการตอบรับดี

คำตอบ:


526

หน้าจอมีสโครลบัฟเฟอร์ของตัวเองเนื่องจากเป็นเทอร์มินัลมัลติเพล็กเซอร์และต้องจัดการกับหลายบัฟเฟอร์

อาจมีวิธีที่ดีกว่า แต่ฉันคุ้นเคยกับการเลื่อนโดยใช้ "โหมดการคัดลอก" (ซึ่งคุณสามารถใช้เพื่อคัดลอกข้อความโดยใช้หน้าจอตัวเองแม้ว่าต้องใช้คำสั่ง paste ด้วย):

  • ตีรวมกันคำนำหน้าจอของคุณ ( C-a/ control+ Aค่าเริ่มต้น) Escapeจากนั้นกด

  • เลื่อนขึ้น / ลงด้วยปุ่มลูกศร ( และ)

  • เมื่อเสร็จแล้วให้กดqหรือEscapeเพื่อกลับไปที่จุดสิ้นสุดของบัฟเฟอร์การเลื่อน

(หากแทนที่qหรือEscapeคุณกดEnterหรือReturnเลื่อนเคอร์เซอร์คุณจะเลือกข้อความที่จะคัดลอกและการกดปุ่มEnterหรือReturnครั้งที่สองจะเป็นการคัดลอกจากนั้นคุณสามารถวางC-aตามด้วย])

แน่นอนคุณสามารถใช้moreและlessเพจเจอร์ที่ใช้บ่อยสองรายการซึ่งอาจเพียงพอสำหรับคำสั่งบางอย่าง


5
นอกจากนี้การกด q ออกจากโหมดการคัดลอกโดยไม่คัดลอกสิ่งใด (และเป็นการกดปุ่มน้อยลงหนึ่งครั้ง) นี่อาจเป็นคำอธิบาย vi แต่ตอนนี้ลิงก์เสีย
Nathanael Farley

3
นอกจากนี้การกด [Esc] ออกจากโหมดถ่ายสำเนาก็เช่นกัน
Sopalajo de Arrierez

7
วิธีการหน้าขึ้น?
Sungguk Lim

10
Scroll buffer ดูเหมือนว่าจะรองรับคำสั่งแบบ vi: Cb และ Cf สำหรับการเลื่อนหน้าขึ้น / ลง
Touko

3
ในโหมดถ่ายสำเนาปุ่มของฉัน PageUp และ PageDown ทำงาน กดครั้งแรกเท่านั้นย้ายหนึ่งบรรทัด แต่หลังจากนั้นหน้าเหมือนปกติ
เอลียาห์

171

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

~/.screenrcเพิ่มไปของคุณ

# Enable mouse scrolling and scroll bar history scrolling
termcapinfo xterm* ti@:te@

คุณสามารถอ่านการอภิปรายมากขึ้นที่นี่


1
ตั้งค่าขีด จำกัด การเลื่อนกลับโดยพิมพ์ Ctrl + A,:, พิมพ์ "scrollback 10000" หรือค่าตัวเลขใด ๆ ที่คุณต้องการ
lobi

2
การใช้สิ่งนี้คีย์ลัดทั่วไปของเทอร์มินัล Linux (shift + pg up / down home / end) ก็ใช้ได้เช่นกัน
tokland

5
เคล็ดลับนี้ทำให้ฉันพิจารณาอีกครั้งโดยใช้หน้าจอ ...
ตรวจสอบปลา

5
+1 สวยงามกว่าโซลูชันที่ยอมรับ
Ryan Yoosefi

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

28

คำตอบทั้งหมดเหล่านี้ระบุวิธีการนำทางภายในเซสชันหน้าจอ แต่มีฟังก์ชันการทำงานในตัวในคำสั่งหน้าจอเพื่อเก็บทุกอย่างในไฟล์ผ่าน-Lอาร์กิวเมนต์ตามคู่มือที่อ่าน:

-L บอกหน้าจอเพื่อเปิดการบันทึกผลลัพธ์อัตโนมัติสำหรับหน้าต่าง

ดังนั้นคุณสามารถทำ:

screen -L -S testscreen

และมันจะสร้างไฟล์โดยscreenlog.#ที่#หมายเลขนั้นสำหรับหน้าจอนั้นเริ่มต้นจาก 0

มันมีข้อดีมากมายและสิ่งที่สำคัญที่สุดสำหรับฉันคือ:

  1. การเก็บบันทึกสิ่งที่ฉันทำเนื่องจากฉันสามารถบันทึกไฟล์บันทึกในโฟลเดอร์โครงการเพื่อใช้อ้างอิงในอนาคต
  2. คุณสามารถติดตามกระบวนการโดยไม่ใช้งานและไม่โต้ตอบ:
    • ใช้tailfสำหรับตรวจสอบความคืบหน้าแบบเรียลไทม์โดยไม่ต้องต่อกับหน้าจอ
    • ใช้grepเพื่อตรวจสอบคำศัพท์เฉพาะในบันทึกและสร้างการแจ้งเตือน (อีเมลป๊อปอัป voip ฯลฯ ) สามารถนำไปใช้กับหลายหน้าจอโดยที่คุณไม่ต้องดู

1
ฉันไม่ได้ตระหนักถึงการ-Lตั้งค่าสถานะหน้าจอนี้มีประโยชน์มาก! +1
Kredns

1
เพียงแค่ต้องการเพิ่มมากขึ้นscreenlog.#สร้างขึ้นในโฟลเดอร์เดียวกับที่คุณดำเนินการscreenคำสั่ง
Lê Quang Duy

3

ฉันประสบความสำเร็จในการรับเพจจิ้งขั้นพื้นฐานโดยการไพพ์เนื้อหาไปที่more:

ls -l | more

หรือถ้าคุณต้องการเอาท์พุทสีสำหรับกรณีการใช้งานเช่นการเน้นไวยากรณ์คุณสามารถใช้

ls -l --color=always | more

ผลลัพธ์เป็นผลลัพธ์ที่ฉันสามารถเลื่อนหน้าจอทีละหน้าได้อย่างง่ายดาย ฉันไม่ได้ลองใช้ @ uther ในการดัดแปลง~/.screenrcแต่ดูเหมือนว่าจะเป็นทางออกที่ยั่งยืนเมื่อเมาส์มีให้ใช้

หากต้องการลองใช้งานคุณสามารถไปที่BusyBox emulatorจากนั้น ...

cd ~/bin
ls -l --color=always | more

ใช้สเปซบาร์เพื่อเลื่อนดูผลลัพธ์ของls -lคำสั่งหรือใช้ปุ่ม Enter เพื่อเลื่อนดูผลลัพธ์ทีละบรรทัด

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