Рабочий проект для традиционной оболочки:
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
Теперь мы можем поместить экран в файл. Необходимо sudo.
id=${ttyid//\/dev\/tty}
sudo cat /dev/vcs$id > screen.dump
Кстати screendump
: так называемая программа больше не работает для меня. Может быть, только для старых ядер. / dev / pts / N тоже не работает для меня. Может быть, вам нужен какой-нибудь дополнительный MKDEV в / dev - я немного помню о некоторых /dev/cuaN
, но могу ошибаться.
Мы хотели бы передать вывод вместо использования screen.dump. Но так или иначе это не работает - иногда это ждет ENTER.
Захват не обычный текстовый файл с переводами строки, но с - например - 80x50 символов в одной последовательности.
Чтобы выбрать последние 2 строки, 1 для вывода команды и одну для строки подсказки, я возвращаю ее, выбираю 160 символов, снова возвращаюсь и 80.
rev vcs4.dat | sed 's/\(.\{160\}\).*/\1/g' | rev | sed 's/\(.\{80\}\).*/\1/g'
На тот случай, если вы когда-нибудь задумывались, почему существует rev
программа.
Критика:
- Первые команды вводятся, тем самым сдвигая строку вперед. Хорошо - просто числовое упражнение, чтобы выбрать 3-ю последнюю строчку или что-то в этом роде. Я работал в основном в другом окне.
- Не у всех есть экран 80х50. Ну да, мы знаем. Для вашего удовольствия есть $ COLUMNS и $ ROWS.
- Выход не всегда внизу. Свежая и молодая раковина может быть в верхних рядах. Что ж, все просто: оцените, какая оболочка работает. Какая подсказка используется. Сделайте некоторое быстрое обнаружение и найдите последнюю строку с приглашением оболочки. Строка перед (или 2. перед) должна содержать каталог.
Первая диаграмма сделана с объяснением