Bisakah saya menyimpan output dari perintah terminal sebelumnya hanya dengan menggunakan keyboard?

12

Saya hanya menghabiskan dua jam terakhir menjalankan ddperintah (atau membayangkan skenario "sulit untuk dilakukan kembali") dari CD langsung tanpa GUI; yang saya miliki hanyalah CTRL+ALT+F#terminal Bash "multi-jendela" ( ) terpercaya saya .

Sayangnya, selama perintah itu ddmengeluarkan beberapa pesan kesalahan yang tidak menyenangkan dan sedikit lebih banyak informasi yang ingin saya simpan. Saya memiliki drive USB yang terhubung ke mana saya dapat menulis data, tetapi bagaimana cara mendapatkan hasil sebelumnya disimpan sebagai file teks setelah perintah sudah dijalankan?

Jika ini merupakan emulator terminal di dalam GUI yang bagus, saya cukup menggunakan mouse saya untuk memilih teks, menyalinnya, dan menempelkannya ke dalam dokumen. Dan seandainya saya tahu perintah akan menghasilkan kesalahan, saya akan memipangnya ke file untuk memulai, tetapi sayangnya, output tambahan datang sebagai kejutan.

Bagaimana cara menyimpan output teks dari perintah saya sebelumnya ke file tanpa menjalankan kembali perintah? Apakah ini mungkin?

IQAndreas
sumber
Saya telah mencari cara untuk memilih teks di layar, tetapi sejauh ini saya hanya menemukan cara untuk melakukan ini menggunakan teks yang telah Anda masukkan ke prompt.
IQAndreas
Sudahkah Anda mencoba menggunakan redirection output ??
eyoung100
2
@ eyoung100 Apakah itu kata lain untuk "piping"? Seperti dalam dd if=/dev/sda of=/backups/sda.img > result.txt. Jika demikian, masalahnya adalah saya sudah menjalankan ddperintah . Bagaimanapun, saya ingin menghindari menjalankan perintah lagi, yang dalam beberapa situasi tidak mungkin.
IQAndreas
2
Dengan asumsi ini adalah Linux: instal gpm . (Mulai jika perlu, mis service start gpm.). Sapu sebuah daerah sambil menahan tombol kiri mouse. Ketik cat > outputfiledan klik tombol kanan mouse untuk menempelkan wilayah yang baru saja Anda pilih.
Mark Plotnick
1
Jika tujuannya semata-mata "untuk menjaga ... [informasi]", jalan terakhir adalah mengambil kamera dan mengambil foto layar. (Dan, secara teoritis, Anda dapat menjalankan OCR pada itu.)
Scott

Jawaban:

15

Kernel linux harus menyimpan log di layar untuk vts Anda di /dev/vcsa*[ttynum]perangkat yang sesuai .

Itu sebabnya yang berikut ini bekerja:

echo hey >/dev/tty2
dd bs=10 count=1 </dev/vcs2

... yang mencetak ...

hey       

Perangkat yang sesuai /dev/vcsa[ttynum]akan menyimpan versi yang disandikan dari teks yang diformat di layar, sedangkan yang /dev/vcs[ttynum]akan menjadi dump biasa. The vcsa[ttynum]perangkat akan menyandikan sepasang byte yang menggambarkan setiap char di layar dan atributnya, serta string di kepala setiap halaman logis yang menunjukkan tty direferensikan ini garis, kolom menghitung.

Seperti yang ditunjukkan oleh @kasperd, saya telah salah sebelumnya dengan mengasumsikan \aBEL disandikan di antara setiap karakter, padahal faktanya: Kombinasi warna default terjadi bersamaan dengan karakter bel.

Untuk keperluan Anda menggunakan /dev/vcs[ttynum]mungkin paling mudah. Berikut ini lperbedaannya:

echo hey >/dev/tty2
dd bs=10 count=1 </dev/vcs2 |
sed -n l

... mencetak ...

hey       $

...dan...

echo hey >/dev/tty2
dd bs=10 count=1 </dev/vcsa2 |
sed -n l

... mencetak ...

0\200\000\004h\ae\ay\a$
mikeserv
sumber
1
vcsatidak menempatkan karakter yang sama di antara semua karakter. Ini memberi Anda pasang byte yang memberi tahu Anda karakter mana yang ada di layar dan warna apa yang dimilikinya. Kombinasi warna default terjadi bersamaan dengan karakter bel.
kasperd
@kasperd - terima kasih. Apakah lebih baik?
mikeserv
Itu lebih baik. 👍
kasperd
2

Pergi ke (/ masuk) terminal lain dan jalankan sudo screendump N > screenoutput.txt, di mana Nnomor terminal yang Anda inginkan.

Tidak ada jaminan, saya khawatir. Jika konsol virtual itu menyimpannya, saya belum pernah melihatnya. Tapi itu memberi Anda semua yang dapat Anda lihat di terminal itu.

Sidhekin
sumber
jika itu berhasil, itu mungkin karena ia mengambilnya dari /dev/vcsa*[1-9]*- (yang saya kira izin superuser adalah untuk) . Konsol linux telah mendukung jaminan simpanan untuk sebagian besar seri 3. *, saya kira. Saya tidak yakin bagaimana orang bisa mengambilnya (menentang menggunakan /dev/vcsa*[1-9]*perangkat) tapi mungkin ada caranya.
mikeserv
Lebih baik tidak beralih ke konsol lain, karena beralih menghapus backlog, hanya mempertahankan apa yang saat ini terlihat di layar.
Gilles 'SANGAT berhenti menjadi jahat'
@ mikeserv Ya. Yah, halaman manual tampaknya mengatakan itu menggunakan keduanya /dev/vcs$i dan /dev/vcsa$i. Ini memberikan hasil yang mudah dibaca. ;-)
The Sidhekin
@ Gilles Ah, jadi ada jaminan simpanan? Tetapi screendumptidak berhasil, bahkan jika saya tetap di konsol yang sama.
The Sidhekin
1
Anda dapat melihat scrollback dengan mengetik Shift-PageUp satu kali atau lebih. Saya tidak tahu cara untuk snarf teks dalam scrollback selain menggunakan mouse via gpm.
Mark Plotnick