เทอร์มินัล * เอาต์พุต * ประวัติ


19

ฉันใช้ฟังก์ชั่นอย่างละเอียดเพื่อสำรวจประวัติคำสั่งในเทอร์มินัลของฉัน ฉันสงสัยว่ามีวิธีนำทางประวัติเอาต์พุตคำสั่งด้วยหรือไม่? (นอกเหนือจากการรักษา histsize ขนาดใหญ่และพิงปุ่ม pgup)

ฉันไม่สามารถ 'เรียกใช้คำสั่ง' ซ้ำอีกครั้งในสถานการณ์เฉพาะของฉันแหล่งที่มาของคำสั่งจะเปลี่ยนไป ฉันมักจะต้องมองย้อนกลับไปที่ผลลัพธ์ของการเปลี่ยนแปลงก่อนหน้านี้

ยินดีต้อนรับ Hacks

ขอบคุณ!

แก้ไข 2010:

ฉันได้รับเครดิต 'tee' ในบรรดาวิธีการทั้งหมดในการบันทึกเซสชันของคุณที่อื่น ๆ มันเป็นวิธีการที่ใช้กันอย่างแพร่หลายมากที่สุด (เช่นเป็นส่วนหนึ่งของ gnu coreutils และไม่จำเป็นต้องใช้เชลล์หรือยูทิลิตี้เฉพาะเพื่อทำงาน) มันไม่ใช่สิ่งที่ฉันกำลังมองหา แต่ฉันรู้ว่าสิ่งนั้นไม่มีอยู่จริง

การประมาณที่ใกล้เคียงที่สุดที่ฉันสามารถนึกได้คือการใช้บางอย่างเช่นscreen(byobu / tmux) ที่บันทึกไปยังไฟล์และเขียน (และ keybind) คำสั่งที่กำหนดเองไปยังหน้า / ค้นหาผ่าน logfile นั้น (คิดว่าlessเพจโดยพรอมต์มากกว่าหน้าจอ) ขอบคุณทุกคน

แก้ไข 2012:

@Dustin Kirkland คำตอบที่ชัดเจนที่สุดอย่างน้อยที่สุดโดยทั่วไป; บัฟเฟอร์ scrollback ของเทอร์มินัลเป็นวิธีที่ล่วงล้ำน้อยที่สุดในการสำรวจประวัติการส่งออกคำสั่ง ดูเหมือนว่า Byobu จะมีการบันทึกจำนวนบรรทัดเริ่มต้นเป็นจำนวนมาก (10K; tmux มี 2K, หน้าจอ GNU 100) และอนุญาตให้ทำการค้นหา regex (รูปแบบคร่าวๆระบุว่าหน้าจอ GNU ไม่มีการค้นหาแบบเลื่อนย้อนกลับ

คำตอบ:


4

คุณพูดถึงการใช้byobu ...

นั่นเป็นวิธีหนึ่งในการทำอย่างแน่นอน Byobu เก็บประวัติ scrollback 10K ต่อหน้าต่างหรือแยกต่อ (บานหน้าต่าง)

คุณสามารถป้อน scrollback ได้อย่างง่ายดายโดยการกดAlt- PageUp, Alt- หรือPageDown F7เมื่อคุณอยู่ในโหมด scrollback คุณสามารถค้นหาไปข้างหน้าและข้างหลังโดยใช้คำสั่ง vi-like ใช้/regexเพื่อค้นหาไปข้างหน้าและ?regexเพื่อค้นหาย้อนหลัง


ที่เก็บประวัติ scrollback อยู่ที่ไหนและมีวิธีที่จะทำให้มันคงอยู่ระหว่างเซสชันหรือไม่? เช่น: เปิดเทอร์มินัลด้วย Byobu, เรียกใช้คำสั่งบางอย่าง, เรียกexit, ปิดเทอร์มินัล, เปิดเทอร์มินัลใหม่ด้วย Byobu และยังคงมีเซสชันก่อนหน้า
Darrel Holt

11

คุณสามารถใช้teeเพื่อส่งเอาต์พุตคำสั่งของคุณไปยังไฟล์และไปยังเทอร์มินัลในเวลาเดียวกัน


8

คุณสามารถใช้scriptเพื่อบันทึกเซสชันเทอร์มินัลของคุณไปยังไฟล์ ถ้าคุณอยากให้เรื่องนี้เกิดขึ้นแล้วเพิ่มที่เหมาะสมคำสั่งของคุณscript.login

$ man script


5

ใช้ screen -L

หลังจากออกจากเซสชันเชลล์ ( exitคำสั่ง) คุณจะได้รับ logfile ในไดเรกทอรีเดียวกับที่คุณเริ่มscreen

จากนั้นคุณสามารถดูผลลัพธ์ด้วยmoreหรือless -R


5

screen สามารถตั้งค่าให้เข้าสู่ระบบออก

วิธีการหนึ่งที่จะเริ่มต้นภายในที่ใช้screenเซสชั่นคือการกดCtrl- aแล้วแล้วใส่:log

จากman screen:

log [on|off]

Start/stop writing output of the current window to a file "screenlog.n" in the 
window's default directory, where n is the number  of  the  current  window.
This filename can be changed with the `logfile' command. If no parameter is
given, the state of logging is toggled. The session log is appended to the
previous contents of the file if it already  exists.  The current contents and
the contents of the scrollback history are not included in the session log.
Default is `off'.

logfile filename
logfile flush secs

Defines  the  name  the  log files will get. The default is "screenlog.%n". The 
second form changes the number of seconds screen will wait before flushing the
logfile buffer to the file-system. The default value is 10 seconds.


3

bash จะเก็บประวัติของสิ่งที่คุณทำ แต่ไม่ส่งออกจากคำสั่ง อาจมีขนาดใหญ่และบ่อยครั้งที่ไม่มีประโยชน์

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