Я нахожусь на tty, с большим количеством командных входов, большим количеством подробных их выводов и некоторыми сообщениями об ошибках. Теперь я должен получить все эти тексты stdin / stdout / stderr в формате, отображаемом на экране консоли, в файл. Как я могу сделать это, используя встроенные инструменты (предпочтительно)?
Я не знаю, если вопрос сбивает с толку! Это действительно просто .. Предположим, я вошел в консольный терминал tty1, выполнил некоторые команды (без ведения журнала, потому что я не чувствовал в этом необходимости), но внезапно пришли определенные выводы / сообщения, которые я хочу выгрузить в файл (или другой вариант - взять ручку и бумагу).
Причина, по которой я предполагаю, что это может быть сделано, заключается в том, что вы можете использовать shift + PgUp/PgDwn
для смещения выводимых данных экрана, что означает, что они все еще находятся в буфере (даже если обработка конвейерна)! ... и это то, что должно быть восстановлено.
TTYs используют "устройства" памяти виртуальной консоли для буферизации их экранного содержания. Можно читать больше о них в man vcs
, но это позволит Вам получить то, что находится на экране в текущий момент .
В практике это просто пронумерованные файлы в /dev/
, которые выстраиваются в линию с числом TTY. Вот пример, который я сделал с TTY2:
$ sudo fold -w$(stty -F /dev/tty2 size | awk '{print $2}') /dev/vcs2
Ubuntu 14.04 LTS bert tty2
bert login: oli
Password:
oli@bert:~$ cd test
oli@bert:~/test$ ls
Madonna - 10 - Bedtime Story.mp3 output_MP3WRAP.mp3
Madonna - 11 - Take A Bow.mp3
oli@bert:~/test$
fold -w$(...)
существует то, потому что буферизированный вывод не делает , появляются для имения управляющих символов или новых строк, которые я ожидал бы. Это просто добавляет \n
в конце каждой строки.
, Поскольку TuKsn указывает в комментариях, Вы не должны бездельничать со всем этим, можно достигнуть точно того же с:
sudo screendump 2
можно придерживаться > tty.log
на конце любой команды для записи вывода в файл, названный tty.log
в текущем каталоге:
sudo screendump 2 > tty.log
<час> Снова, это только получит Вас, что находится на экране . Даже при увеличении буфера scrollback в TTYs это не хранится в доступной памяти . можно изменить это , но это включает перекомпиляцию ядра.
, Который включил бы перезагрузку и потерю текущий экран поэтому, если можно сделать, это там - намного более легкие опции для входа будущее IO, как screen
или tmux
или всего script
.
Вероятно, можно использовать программу, названную screen
. Это сохраняет весь вывод Терминала в файл. Взгляните на этот поток Форумов Ubuntu http://ubuntuforums.org/showthread.php?t=1379903 . CMIIW.
Так как я не могу найти сочетание клавиш для Выбора Всеми, я нашел их, которые могли бы помочь... https://stackoverflow.com/questions/1536757/selecting-text-in-terminal-without-using-the-mouse копия буфера обмена командной строки А и утилита вставки?
первый является экраном, который был предложен, но это, кажется, имеет утилиту, которая копирует текст, так, чтобы мог бы работать. Перейдите к режиму копии с ^A-Esc. Начните выбирать текст с пространством и текст выбора конца с пространством. Вставьте текст с ^A-]
, второй - о вставке текста в Буфере обмена в файл. Я абсолютно не уверен, если какой-либо из них будет работать хотя... Надежда каждый делает.