Simpan scrollback terminal saat ini ke file?

24

Saya telah mencari jawaban untuk ini dan tidak menemukan apa pun yang membuat saya berpikir itu tidak mungkin tetapi ...

Apakah mungkin untuk menyimpan buffer scrollback Terminal Gnome saat ini ke file?

Saya tahu bahwa saya dapat melakukan sesuatu seperti command > output.txtmengalihkan semua output ke file, atau command | tee output.txtuntuk membagi output ke terminal serta ke file. Apa yang saya coba lakukan adalah menangkap ini setelah fakta. Saya ingin menyimpan konten scrollback tab terminal saat ini ke file.

Karl Wilbur
sumber
kittyadalah salah satu program terminal yang dapat melakukan ini, sayangnya font terlihat buruk (tidak ada rendering subpiksel)
jberryman
Terima kasih, @jberryman. Senang mendengarnya.
Karl Wilbur

Jawaban:

37

Setelah sedikit bermain-main, saya menemukan bahwa Anda dapat:

  • triple-click baris terakhir
  • memukul shift + home
  • shift + click garis pertama
  • salin dengan ctrl + shift + c(atau right-click> 'Salin')

Sekarang rekatkan ke file teks ... atau, gunakan xselAnda dapat mendorong clipboard ke file baru dengan membuka tab baru dan melakukan:

xsel -o > out.txt

(Untuk menginstal xsellakukan sudo apt-get install xsel)

Karl Wilbur
sumber
5
Menyoroti dapat dilakukan dengan lebih mudah: Edit-> Select All.
egmont
3
Ini adalah jawaban yang bagus karena itu membuat Anda sadar bahwa Anda dapat menggunakan triple-click the last linedan shift + home or the scrollbarpergi ke lokasi yang tepat yang Anda inginkan untuk awal output.
Chef Firaun
2
Peringatan: Jangan coba ini dengan scollback besar (banyak megabita) karena mungkin hang X (terjadi pada saya).
Kevin Cox
Dengan banyak megabita, pemrosesan lambat diharapkan. Bersabarlah dan biarkan komputer bekerja. "Beri dia sebentar! Ini akan ke luar angkasa! Bisakah kamu memberikannya sebentar untuk kembali dari luar angkasa ?!"
Karl Wilbur
Saya hanya mencoba untuk menyalin scrollback besar (output rsync dari membuat cadangan beberapa drive 2TB semalam) menggunakan Edit-> Select Allmetode untuk menangkap output. Sudah 25-30 menit sekarang dan Terminal Gnome masih terkunci. Menggunakan Byobu, saya dapat memulai topuntuk melihat bahwa Terminal Gnome masih berjalan (menambah waktu CPU); Saat ini menggunakan lebih dari 4.176g RAM dan perlahan-lahan naik. Jadi, ya, dengan scrollback yang sangat besar, itu akan memakan waktu cukup lama. X masih berjalan (dan Chrome, YouTube, Nautilus, Byobu, dll.) Tetapi Terminal Gnome akan membutuhkan satu menit. Seharusnya aku merencanakan lebih baik.
Karl Wilbur
2

scriptperintah sesuai ketika Anda ingin menyimpan sesi terminal ke file dan menampilkannya nanti. Ketika Anda menyebutnya scriptmeluncurkan shell Anda, dan ketika Anda selesai, ketik saja keluar. Semuanya akan di typescriptfile kecuali Anda menentukan sebaliknya.

Contohnya,

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秒

Mungkin ada karakter kontrol dalam file skrip, seperti dari lsperintah, jadi gunakan cat typescript | col -b > outputfile.txtperintah untuk mengarahkan output bersih ke file

Sergiy Kolodyazhnyy
sumber
5
Terima kasih, tetapi ini adalah sesuatu yang perlu dilakukan sebelum Anda mengumpulkan informasi berharga di terminal Anda. Saya membutuhkan solusi setelah fakta.
Karl Wilbur
1
Ini sangat baik untuk diketahui. Saya akan mencobanya di masa depan.
Karl Wilbur
@KarlWilbur :) Saya yakin Anda akan merasakan manfaatnya. Saya sering menggunakannya untuk pekerjaan rumah pemrograman saya. Sebenarnya ada cara untuk membuang apa yang ada di layar di konsol TTY, tetapi gnome-terminal sedikit lebih rumit
Sergiy Kolodyazhnyy
@SergiyKolodyazhnyy Saya mencoba menerapkan ini ke dalam skrip python saya, tetapi saya tidak dapat keluar dari skrip yang melakukan "os.system (" exit "). Namun ia keluar dari terminal dan menyimpan output ke file.
mtkilic
@ mtkilic scriptPerintah meluncurkan proses terpisah, jadi skrip python Anda sebagai induk dari subproses sedang menunggu anak keluar. Ini lebih berarti untuk sesi interaktif, tetapi jika Anda ingin merekam sesi dengan juru bahasa Python, mulailah scriptperintahnya terlebih dahulu dan luncurkan interpreter kedua. Perintah tersebut juga harus memiliki -ctanda sehingga Anda dapat memanggil script -c pythontetapi mengeceknya man script.
Sergiy Kolodyazhnyy