Чи можу я зберегти вихідну інформацію з попередньої термінальної команди, використовуючи лише клавіатуру?


12

Я щойно провів останні дві години, виконуючи ddкоманду (або зобразити будь-який подібний сценарій «важко повторно») з живого компакт-диска без графічного інтерфейсу; все, що я маю, - це мій надійний "багатовіконний" ( CTRL+ALT+F#) термінал Bash.

На жаль, під час команди ddвикинуло кілька неприємних повідомлень про помилки та трохи більше інформації, яку я хотів би зберегти. У мене підключений USB-накопичувач, на який я можу записати дані, але як мені зберегти попередній вихід у текстовому файлі після того, як команда вже виконана?

Якби це був емулятор терміналу в приємному графічному інтерфейсі, я просто використав би мишу, щоб вибрати текст, скопіювати його та вставити в документ. І якби я знав, що команда призведе до помилок, я б почав це до файлу для початку, але, на жаль, додатковий вихід став несподіванкою.

Як зберегти виведення тексту з попередньої команди у файл без повторної роботи команди? Це навіть можливо?


Я шукав способи вибору тексту на екрані, але поки що я лише знаходжу способи зробити це, використовуючи текст, який ви ввели у підказку.
IQAndreas

Ви намагалися використовувати переадресацію виводу ??
eyoung100

2
@ eyoung100 Це інше слово для "трубопроводів"? Як у dd if=/dev/sda of=/backups/sda.img > result.txt. Якщо так, проблема в тому, що я вже запустив ddкоманду . За будь-яку ціну я хочу уникати запуску команди ще раз, що в деяких ситуаціях неможливо.
IQAndreas

2
Якщо припустити, що це Linux: встановити gpm . (Почніть його, якщо потрібно, наприклад service start gpm). Підмітайте область, утримуючи ліву кнопку миші. Введіть cat > outputfileта натисніть правою кнопкою миші, щоб вставити обраний вами регіон.
Марк Плотнік

1
Якщо мета полягає виключно в тому, щоб "зберегти ... [інформацію]", остання можливість - захопити камеру та сфотографувати екран. (І теоретично ви могли б запустити OCR на цьому.)
Скотт

Відповіді:


15

Ядро Linux повинно зберігати екранний журнал для вашого vts у відповідному /dev/vcsa*[ttynum]пристрої.

Ось чому такі роботи:

echo hey >/dev/tty2
dd bs=10 count=1 </dev/vcs2

... які друкує ...

hey       

Відповідний /dev/vcsa[ttynum]пристрій буде зберігати закодовану версію відформатованого тексту на екрані, тоді як /dev/vcs[ttynum]буде звичайним дамп. Ці vcsa[ttynum]пристрої будуть кодувати пару байтів , які описують кожен екранний символ і його атрибути, а також рядок на чолі кожної логічної сторінки , яка вказує посилального TTY по лінії, стовпці порахувати.

Як зазначає @kasperd, я раніше помилявся, вважаючи, що \aBEL кодується між кожним символом, коли насправді: Комбінація кольорів за замовчуванням буває збігається з символом дзвоника.

Для ваших цілей використання /dev/vcs[ttynum], мабуть, найпростіше. Ось lдумка про відмінності:

echo hey >/dev/tty2
dd bs=10 count=1 </dev/vcs2 |
sed -n l

... відбитки ...

hey       $

... і ...

echo hey >/dev/tty2
dd bs=10 count=1 </dev/vcsa2 |
sed -n l

... відбитки ...

0\200\000\004h\ae\ay\a$

1
vcsaне ставить однаковий символ між усіма символами. Він дає вам пари байтів, які повідомляють вам, який символ є на екрані та який колір у нього є. Комбінація кольорів за замовчуванням збігається з символом дзвоника.
kasperd

@kasperd - дякую. Чи краще?
mikeserv

Так краще. 👍
kasperd

2

Перейдіть до (/ увійдіть) в інший термінал і запустіть sudo screendump N > screenoutput.txt, де Nномер потрібного терміналу.

Боюсь ніякого відставання. Якщо ці віртуальні консолі зберігають її, я ніколи цього не бачив. Але ви отримуєте все, що ви можете побачити на цьому терміналі.


якщо це працює, можливо, тому, що він захоплює це з /dev/vcsa*[1-9]*- (саме для цього я б здогадався, що вони мають дозвіл суперпользователя) . Консолі linux підтримують відставання і для більшості серій 3. *, я думаю. Я не впевнений, як це можна схопити (на відміну від використання /dev/vcsa*[1-9]*пристроїв), але, можливо, є спосіб.
mikeserv

Краще не переходити на іншу консоль, оскільки перемикання стирає відставання, зберігаючи лише те, що зараз видно на екрані.
Жил "ТАК - перестань бути злим"

@mikeserv Так. Що ж, сторінка man, схоже, каже, що вона використовує і те, /dev/vcs$i і /dev/vcsa$i. Однак це дає читабельний результат. ;-)
Сидекін

@Gilles Ага, значить, є відставання? Але на screendumpце не потрапляє, навіть якщо я буду в одній консолі.
Сідекін

1
Ви можете побачити прокрутку, ввівши Shift-PageUp один або кілька разів. Я не знаю способу прискорити текст за допомогою прокрутки, окрім використання миші через gpm.
Марк Плотнік
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.