Draf kerja untuk shell tradisional:
ttyid=$(readlink /proc/$$/fd/1)
\___/ \______/ \___/ | | |
| | | | | \- 0: stdin
| | | | | 1: stdout <- our interest
| | | | | 2: stderr
| | | | \- fd is, maybe, filedescriptor
| | | |
| | | \- $$ is the PID of the current process (shell,
| | | in our case)
| | |
| | \- you know, much runtime stuff is here
| |
| \- readlink extracts the symbolic link of /proc/$$/fd/1
| lrwx------ 1 stefan stefan 64 2011-03-18 09:11
| /proc/22159/fd/1 -> /dev/pts/4
|
\- /dev/tty3 for real shell, /dev/pts/3 for xterm
Sekarang kita bisa menampilkan layar ke file. Membutuhkan sudo.
id=${ttyid//\/dev\/tty}
sudo cat /dev/vcs$id > screen.dump
Apropos screendump
: program yang dinamai itu tidak bekerja lagi untuk saya. Mungkin hanya untuk kernel yang lebih tua. / dev / pts / N tidak bekerja untuk saya juga. Mungkin Anda harus ke beberapa opsional MKDEV di / dev - Saya ingat dengan keliru tentang beberapa /dev/cuaN
, tapi saya mungkin salah.
Kami ingin menyalurkan output daripada menggunakan screen.dump. Tapi entah bagaimana itu tidak berhasil - kadang-kadang menunggu ENTER.
Pengambilan bukan file teks normal dengan umpan baris, tetapi dengan - misalnya - karakter 80x50 dalam satu urutan.
Untuk memilih 2 baris terakhir, 1 untuk output dari perintah, dan satu untuk baris yang meminta, saya mengembalikannya, memilih 160 karakter, kembali lagi dan pilih 80.
rev vcs4.dat | sed 's/\(.\{160\}\).*/\1/g' | rev | sed 's/\(.\{80\}\).*/\1/g'
Kalau-kalau Anda bertanya-tanya, mengapa ada rev
program.
Kritik:
- Perintah pertama dimasukkan, sehingga menggerakkan garis tetap. Nah - hanya latihan numerik untuk memilih baris ke-3 terakhir atau sesuatu. Saya bekerja terutama di jendela yang berbeda.
- Tidak semua orang memiliki layar 80x50. Ya, kita tahu. Ada $ COLUMNS dan $ ROWS untuk kesenangan Anda.
- Output tidak selalu di bagian bawah. Cangkang baru dan muda mungkin ada di baris atas. Yah - sesederhana itu: Evaluasi shell apa yang sedang berjalan. Prompt yang digunakan. Lakukan deteksi cepat dan temukan baris terakhir dengan prompt shell. Baris sebelum (atau 2. sebelumnya) harus berisi direktori.
Diagram pertama dibuat dengan explan.py