บันทึก scrollback เทอร์มินัลปัจจุบันเป็นไฟล์หรือไม่


24

ฉันกำลังมองหาคำตอบและไม่พบสิ่งใดที่ทำให้ฉันคิดว่ามันเป็นไปไม่ได้ แต่ ...

เป็นไปได้หรือไม่ที่จะบันทึกบัฟเฟอร์การเลื่อนกลับของ Gnome Terminal ปัจจุบันไปยังไฟล์?

ฉันรู้ว่าฉันสามารถทำบางสิ่งบางอย่างเช่นcommand > output.txtเปลี่ยนเส้นทางเอาต์พุตทั้งหมดไปยังไฟล์หรือcommand | tee output.txtแยกเอาต์พุตไปยังเทอร์มินัลเช่นเดียวกับไฟล์ สิ่งที่ฉันพยายามทำคือจับภาพสิ่งนี้หลังจากข้อเท็จจริง ฉันต้องการบันทึกเนื้อหาการเลื่อนกลับของแท็บเทอร์มินัลลงในไฟล์


kittyเป็นโปรแกรมเทอร์มินัลตัวหนึ่งที่สามารถทำสิ่งนี้โชคไม่ดีที่ตัวอักษรดูแย่ (ไม่มีการเรนเดอร์พิกเซล)
jberryman

ขอบคุณ @jberryman ดีแล้วที่รู้.
Karl Wilbur

คำตอบ:


37

หลังจากเล่นไปซักพักฉันพบว่าคุณสามารถ:

  • triple-click บรรทัดสุดท้าย
  • ตี shift + home
  • shift + click เส้นแรก
  • คัดลอกด้วยctrl + shift + c(หรือright-click> 'คัดลอก')

ตอนนี้วางลงในไฟล์ข้อความ ... หรือโดยใช้xselคุณสามารถดันคลิปบอร์ดของคุณเป็นไฟล์ใหม่โดยเพียงแค่เปิดแท็บใหม่และทำ:

xsel -o > out.txt

(เพื่อติดตั้งxselทำsudo apt-get install xsel)


5
ไฮไลท์สามารถทำได้อย่างง่ายดายเพิ่มเติมได้ที่: ->Edit Select All
egmont

3
นี่คือคำตอบที่ดีเพราะทำให้คุณรู้ว่าคุณสามารถใช้triple-click the last lineและshift + home or the scrollbarไปยังตำแหน่งที่แน่นอนที่คุณต้องการสำหรับการเริ่มต้นของการส่งออก
พ่อครัวฟาโรห์

2
คำเตือน: อย่าทดลองใช้กับ scollback ขนาดใหญ่ (หลายเมกะไบต์) เพราะอาจทำให้แฮงค์ X (เกิดขึ้นกับฉัน)
Kevin Cox

ด้วยจำนวนเมกะไบต์การประมวลผลที่ช้าจะต้องคาดหวัง อดทนและปล่อยให้คอมพิวเตอร์ทำงาน "ให้เวลากับมันสักวินาที! มันจะว่าง! คุณช่วยให้วินาทีนั้นกลับจากอวกาศได้ไหม!"
Karl Wilbur

ฉันพยายามคัดลอก scrollback ขนาดใหญ่ (เอาต์พุต rsync จากการสำรองไดร์ฟ 2TB สองคืนข้ามคืน) โดยใช้เมธอดEdit-> Select Allเพื่อบันทึกเอาต์พุต เวลาผ่านไป 25-30 นาทีและสถานี Gnome ยังคงล็อคอยู่ ใช้ Byobu ฉันสามารถเริ่มต้นtopเพื่อดูว่า Gnome Terminal ยังคงทำงานอยู่ (เพิ่มเวลา CPU); ปัจจุบันใช้ RAM มากกว่า 4.176g และค่อยๆปีนเขา ดังนั้นใช่ด้วย scrollback ที่มีขนาดใหญ่มากมันจะใช้เวลาสักครู่ X ยังคงทำงานอยู่ (และ Chrome, YouTube, Nautilus, Byobu ฯลฯ ) แต่ Gnome Terminal นั้นต้องใช้เวลาสักครู่ ฉันควรวางแผนไว้ดีกว่า
คาร์ลวิลเบอร์

2

scriptคำสั่งเหมาะสมเมื่อคุณต้องการบันทึกเซสชันเทอร์มินัลลงในไฟล์และแสดงในภายหลัง เมื่อคุณเรียกscriptมันจะเปิดตัวเชลล์ของคุณและเมื่อคุณทำเสร็จให้พิมพ์ exit ทุกอย่างจะอยู่ในtypescriptไฟล์เว้นแต่คุณจะระบุเป็นอย่างอื่น

ตัวอย่างเช่น

xieerqi:$ echo "Hello, Karl Wilbur"
Hello, Karl Wilbur

xieerqi:$ date
2015年 10月 27日 星期二 11:38:15 MDT

xieerqi:$ df
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda1      115247656 80939384  28430924  75% /
none                   4        0         4   0% /sys/fs/cgroup
udev             2914832        4   2914828   1% /dev
tmpfs             585216     1100    584116   1% /run
none                5120        0      5120   0% /run/lock
none             2926072      328   2925744   1% /run/shm
none              102400       52    102348   1% /run/user

xieerqi:$ exit
Script done, file is typescript
xieerqi@eagle:~$ cat typescript 
Script started on 2015年10月27日 星期二 11时37分55秒

xieerqi:$ echo "Hello, Karl Wilbur"
Hello, Karl Wilbur

xieerqi:$ date
2015年 10月 27日 星期二 11:38:15 MDT

xieerqi:$ df
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda1      115247656 80939384  28430924  75% /
none                   4        0         4   0% /sys/fs/cgroup
udev             2914832        4   2914828   1% /dev
tmpfs             585216     1100    584116   1% /run
none                5120        0      5120   0% /run/lock
none             2926072      328   2925744   1% /run/shm
none              102400       52    102348   1% /run/user

xieerqi:$ exit

Script done on 2015年10月27日 星期二 11时38分18秒

อาจมีอักขระควบคุมในไฟล์ typescript แม้ว่าเช่นจากคำสั่งlscomand ดังนั้นให้ใช้cat typescript | col -b > outputfile.txtคำสั่งเพื่อเปลี่ยนทิศทางเอาต์พุตแบบล้างไปยังไฟล์


5
ขอบคุณ แต่นี่คือสิ่งที่ต้องทำก่อนที่คุณจะรวบรวมข้อมูลที่มีค่าในเครื่องเทอร์มินัลของคุณ ฉันต้องการทางออกที่ตามความเป็นจริง
Karl Wilbur

1
นี่เป็นสิ่งที่ดีที่จะรู้ ฉันจะให้มันยิงในอนาคต
Karl Wilbur

@KarlWilbur :) ฉันแน่ใจว่าคุณจะพบว่ามีประโยชน์ ฉันใช้มันมากในการทำการเขียนโปรแกรม จริงๆแล้วมีวิธีการทิ้งสิ่งที่อยู่บนหน้าจอในคอนโซล TTY แต่คำพังเพยเทอร์มินัลค่อนข้างยุ่งยากกว่านี้อีกแล้ว
Sergiy Kolodyazhnyy

@SergiyKolodyazhnyy ฉันพยายามที่จะดำเนินการนี้เป็นสคริปต์หลามของฉัน แต่ฉันลาดเทออกจากสคริปต์ทำ "os.system (" ทางออก ") แต่มันไม่ออกจากจากสถานีและบันทึกออกไปยังแฟ้ม..
mtkilic

@mtkilic scriptคำสั่งเรียกใช้กระบวนการแยกต่างหากดังนั้นสคริปต์ python ของคุณที่เป็นพาเรนต์ของกระบวนการย่อยกำลังรอให้เด็กออก มันมีความหมายมากกว่าสำหรับเซสชันแบบโต้ตอบ แต่ถ้าคุณต้องการบันทึกเซสชันใน Python interpreter ให้เริ่มscriptคำสั่งก่อนและเปิด interpreter second คำสั่งควรจะมี-cธงเพื่อให้คุณสามารถโทรหาแต่ตรวจสอบอีกครั้งกับscript -c python man script
Sergiy Kolodyazhnyy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.