Ein Arbeitsentwurf für eine traditionelle Muschel:
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
Jetzt können wir den Bildschirm in eine Datei umwandeln. Braucht Sudo.
id=${ttyid//\/dev\/tty}
sudo cat /dev/vcs$id > screen.dump
Apropos screendump
: Das so genannte Programm funktioniert bei mir nicht mehr. Möglicherweise nur für ältere Kernel. / dev / pts / N hat auch bei mir nicht funktioniert. Möglicherweise müssen Sie einige optionale MKDEV in / dev - Ich erinnere mich dunkel über einige /dev/cuaN
, aber ich kann falsch sein.
Wir möchten die Ausgabe weiterleiten, anstatt screen.dump zu verwenden. Aber irgendwie funktioniert es nicht - manchmal wartet es auf ENTER.
Das Capturing ist keine normale Textdatei mit Zeilenumbrüchen, sondern mit beispielsweise 80x50 Zeichen in einer Sequenz.
Um die letzten 2 Zeilen auszuwählen, eine für die Ausgabe des Befehls und eine für die Eingabezeile, mache ich es rückgängig, wähle 160 Zeichen, wieder rückgängig und wähle 80.
rev vcs4.dat | sed 's/\(.\{160\}\).*/\1/g' | rev | sed 's/\(.\{80\}\).*/\1/g'
Nur für den Fall, dass Sie sich jemals gefragt haben, warum es ein rev
Programm gibt.
Kritik:
- Die ersten Befehle werden eingegeben, wodurch die Linie verschoben wird. Nun - nur eine numerische Übung, um die drittletzte Zeile auszuwählen oder so. Ich habe hauptsächlich in einem anderen Fenster gearbeitet.
- Nicht jeder hat einen 80x50-Bildschirm. Nun ja, wir wissen es. Es gibt $ COLUMNS und $ ROWS für Ihr Vergnügen.
- Die Ausgabe erfolgt nicht immer ganz unten. Eine frische und junge Schale könnte sich in den oberen Reihen befinden. Ganz einfach: Bewerten Sie, welche Shell ausgeführt wird. Welche Eingabeaufforderung wird verwendet? Führen Sie eine schnelle Erkennung durch und suchen Sie die letzte Zeile mit einer Shell-Eingabeaufforderung. Die Zeile vor (oder 2. vor) sollte das Verzeichnis enthalten.
Das erste Diagramm wird mit EXPLAIN.PY erstellt