Una bozza di lavoro per un guscio tradizionale:
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
Ora possiamo collegare lo schermo a un file. Ha bisogno di sudo.
id=${ttyid//\/dev\/tty}
sudo cat /dev/vcs$id > screen.dump
A proposito screendump
: il cosiddetto programma non funziona più per me. Forse solo per i kernel più vecchi. / dev / pts / N non ha funzionato anche per me. Forse devi avere qualche MKDEV opzionale in / dev - mi ricordo cupamente di alcuni /dev/cuaN
, ma potrei sbagliarmi.
Vorremmo reindirizzare l'output invece di utilizzare screen.dump. Ma in qualche modo non funziona - a volte aspetta INVIO.
L'acquisizione non è un normale file di testo con avanzamenti di riga, ma con - ad esempio - caratteri 80x50 in una sequenza.
Per selezionare le ultime 2 righe, 1 per l'output del comando e una per la riga di prompt, la ripristino, seleziono 160 caratteri, ripristiniamo di nuovo e seleziono 80.
rev vcs4.dat | sed 's/\(.\{160\}\).*/\1/g' | rev | sed 's/\(.\{80\}\).*/\1/g'
Nel caso in cui ti sia mai chiesto, perché esiste un rev
programma.
Critica:
- Vengono immessi i primi comandi, spostando così la linea. Bene - solo un esercizio numerico per scegliere la terza riga o qualcosa del genere. Ho lavorato principalmente in un'altra finestra.
- Non tutti hanno uno schermo 80x50. Beh, sì, lo sappiamo. Ci sono $ COLONNE e $ FILI per il tuo piacere.
- L'output non è sempre in fondo. Un guscio fresco e giovane potrebbe essere nelle file superiori. Bene - semplice: valuta quale shell è in esecuzione. Quale prompt viene utilizzato. Esegui un rapido rilevamento e trova l'ultima riga con un prompt della shell. La riga prima (o 2. prima) dovrebbe contenere la directory.
Il primo diagramma è realizzato con spiegato.py