Только в на полпути через 3-часовой сценарий сборки, я буду помнить, что хочу видеть что-то в начале вывода после того, как он сделан. В этой точке я превысил количество строк в моем терминале, таким образом, я не могу прокрутить для наблюдения его (или начало трудно найти). Конечно, я могу быть лучше о хранении моего вывода, но мне всегда было любопытно, если это было возможно.
В оболочке Linux, это возможный возвратить вывод последней команды. Я понимаю, что, возможно, передал его по каналу или отправил вывод в файл, но мое требование состоит в том, чтобы получить тот вывод после того, как команда была выполнена.
Используя csh, но услышал бы о любой оболочке.
No. Вывод программы никогда не проходит через руки оболочки. Без перенаправления он попадает прямо в TTY. При перенаправлении он переходит прямо к тому файлу или каналу, к которому он был направлен. Оболочка не знает, что процесс отправил на stdout / stderr.
сценарий (1)
- именно то, что вам нужно:
script
make
exit
vim typescript
Программа script
запустит новую оболочку и сохранит ввод и вывод в машинописный
файл. Когда вы закончите, просто закройте оболочку с помощью exit
или ^ D
. Если вы не хотите запускать новую оболочку, а просто запускаете свою сборку, вы можете использовать: script -c
.
Я могу использовать команду tee, чтобы поместить вывод в STDOUT, а также в файл, а затем использовать его.
Это могло стать очень запутанным с некоторыми командами, использующими адресацию курсора. Каков результат вашего сеанса vim? Или немного более разумный пример: вы загружаете файл с помощью wget, и он показывает процентную полосу от 0% до 100%. Что это даст?
Я думаю, вам нужна распечатка всего, что находится между вашей текущей строкой и предыдущим приглашением. Это не то, для чего перенаправление оболочки было бы хорошим примером, это в основном то, что делал бы терминал. Вы можете сделать это вручную, скопировав и вставив экран, и, возможно, вы могли бы автоматизировать это с помощью команды exec . tmux может иметь нечто подобное, и вы можете делать странные вещи с режимами оболочки Emacs, но это довольно тяжелое решение. rxvt-unicode имеет расширение perl …
Как насчет использования подстановки. Нравится:
команда1
command2
РЕЗУЛЬТАТ = `LASTCOMMAND`
echo $ RESULT
сохранить вывод как переменную?
bash: Output=$(ls); echo $Output
Вы можете увидеть код возврата последней команды, по крайней мере, в bash, с помощью $?
.
Что касается stdout, я не думаю, что вы сможете.
Это функция вашего терминала. Вам следует сосредоточиться на создании установки, в которой вам не нужно ничего помнить. Одно из возможных решений - запустить «экран» в сценарии входа в систему (что не так-то просто сделать) с включенным ведением журнала.