Вывод последней команды оболочки

Только в на полпути через 3-часовой сценарий сборки, я буду помнить, что хочу видеть что-то в начале вывода после того, как он сделан. В этой точке я превысил количество строк в моем терминале, таким образом, я не могу прокрутить для наблюдения его (или начало трудно найти). Конечно, я могу быть лучше о хранении моего вывода, но мне всегда было любопытно, если это было возможно.

В оболочке Linux, это возможный возвратить вывод последней команды. Я понимаю, что, возможно, передал его по каналу или отправил вывод в файл, но мое требование состоит в том, чтобы получить тот вывод после того, как команда была выполнена.

Используя csh, но услышал бы о любой оболочке.

34
задан Braiam 26 November 2016 в 22:56
поделиться

8 ответов

No. Вывод программы никогда не проходит через руки оболочки. Без перенаправления он попадает прямо в TTY. При перенаправлении он переходит прямо к тому файлу или каналу, к которому он был направлен. Оболочка не знает, что процесс отправил на stdout / stderr.

33
ответ дан 27 November 2019 в 16:39
поделиться

сценарий (1) - именно то, что вам нужно:

script
make
exit
vim typescript

Программа script запустит новую оболочку и сохранит ввод и вывод в машинописный файл. Когда вы закончите, просто закройте оболочку с помощью exit или ^ D . Если вы не хотите запускать новую оболочку, а просто запускаете свою сборку, вы можете использовать: script -c .

19
ответ дан 27 November 2019 в 16:39
поделиться

Я могу использовать команду tee, чтобы поместить вывод в STDOUT, а также в файл, а затем использовать его.

0
ответ дан 27 November 2019 в 16:39
поделиться

Это могло стать очень запутанным с некоторыми командами, использующими адресацию курсора. Каков результат вашего сеанса vim? Или немного более разумный пример: вы загружаете файл с помощью wget, и он показывает процентную полосу от 0% до 100%. Что это даст?

Я думаю, вам нужна распечатка всего, что находится между вашей текущей строкой и предыдущим приглашением. Это не то, для чего перенаправление оболочки было бы хорошим примером, это в основном то, что делал бы терминал. Вы можете сделать это вручную, скопировав и вставив экран, и, возможно, вы могли бы автоматизировать это с помощью команды exec . tmux может иметь нечто подобное, и вы можете делать странные вещи с режимами оболочки Emacs, но это довольно тяжелое решение. rxvt-unicode имеет расширение perl … ​​

3
ответ дан 27 November 2019 в 16:39
поделиться

Как насчет использования подстановки. Нравится:

 команда1
command2
РЕЗУЛЬТАТ = `LASTCOMMAND`
echo $ RESULT 

2
ответ дан 27 November 2019 в 16:39
поделиться

сохранить вывод как переменную?

bash: Output=$(ls); echo $Output
0
ответ дан 27 November 2019 в 16:39
поделиться

Вы можете увидеть код возврата последней команды, по крайней мере, в bash, с помощью $? .

Что касается stdout, я не думаю, что вы сможете.

1
ответ дан 27 November 2019 в 16:39
поделиться

Это функция вашего терминала. Вам следует сосредоточиться на создании установки, в которой вам не нужно ничего помнить. Одно из возможных решений - запустить «экран» в сценарии входа в систему (что не так-то просто сделать) с включенным ведением журнала.

0
ответ дан 27 November 2019 в 16:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: