Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

script(1) - это именно то, что вам нужно:

script
make
exit
vim typescript

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

Ответ 3

Если запуск команды снова не изменит ничего, вы можете использовать!! для доступа к вершине стека истории, чтобы перезапустить последнюю команду. Выполнение этого в backticks позволит вам использовать результат.

$> find . -iname fileInUnknownLocationInHierarchy.txt
./something/buried/deep/where/you/dont/want/to/retype/fileInUnknownLocationInHierarchy.txt
$> vim `!!`

Ответ 4

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

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

Ответ 5

Как использовать замену. Как это:

command1
command2
RESULT=`LASTCOMMAND`
echo $RESULT

Ответ 6

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

Насколько я знаю, я не думаю, что вы можете.

Ответ 7

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

Это обычно помогает, когда вы хотите найти, успешно ли выполнялась ваша последняя команда, и вы также можете форматировать это в своей сборке script для оповещений о пропуске/сбое.

Ответ 8

сохранить результат как переменную?

bash: Output=$(ls); echo $Output

Ответ 9

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

Ответ 10

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

Ответ 11

Вы всегда можете запустить процесс в окне оболочки emacs. Он сохранит все.