Un brouillon de travail pour un shell traditionnel:
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
Nous pouvons maintenant afficher l’écran dans un fichier. Besoin de sudo.
id=${ttyid//\/dev\/tty}
sudo cat /dev/vcs$id > screen.dump
Apropos screendump
: le programme ainsi nommé ne fonctionne plus pour moi. Peut-être pour les noyaux plus âgés seulement. / dev / pts / N n'a pas fonctionné pour moi aussi. Vous avez peut-être besoin de quelques MKDEV optionnels dans / dev - je me souviens très mal de certains /dev/cuaN
, mais je peux me tromper.
Nous aimerions diriger la sortie au lieu d'utiliser screen.dump. Mais de toute façon, cela ne fonctionne pas - parfois, il attend ENTER.
La capture n'est pas un fichier texte normal avec des sauts de ligne, mais avec, par exemple, 80 x 50 caractères dans une séquence.
Pour choisir les 2 dernières lignes, 1 pour la sortie de la commande et une pour la ligne d'invite, je l'inverse, je choisis 160 caractères, je reviens à nouveau et nous choisissons 80.
rev vcs4.dat | sed 's/\(.\{160\}\).*/\1/g' | rev | sed 's/\(.\{80\}\).*/\1/g'
Juste au cas où vous vous seriez déjà demandé pourquoi il y avait un rev
programme.
La critique:
- Les premières commandes sont entrées, déplaçant ainsi la ligne ahed. Eh bien - juste un exercice numérique pour choisir la 3ème dernière ligne ou quelque chose. J'ai travaillé principalement dans une fenêtre différente.
- Tout le monde n'a pas d'écran 80x50. Eh bien, oui, nous savons. Il y a $ COLUMNS et $ ROWS pour votre plaisir.
- La sortie n'est pas toujours au bas. Une coquille fraîche et jeune pourrait être dans les rangées supérieures. Bien - aussi simple que cela: Évaluez quel shell est en cours d’exécution. Quelle invite est utilisée. Effectuez une détection rapide et recherchez la dernière ligne avec une invite du shell. La ligne avant (ou 2. avant) doit contenir le répertoire.
Le premier diagramme est fait avec explique.py