Как передать вывод по каналу команды в файл на Linux

Я выполняю задачу на CLI, который предлагает мне да/нет вход.

После выбора выбора большая сумма информации прокручивает на экране - включая несколько ошибок. Я хочу передать этот вывод по каналу в файл, таким образом, я вижу ошибки. Простое'>' не работает, так как команда ожидает ввод с клавиатуры.

Я работаю на Ubuntu 9.1.

16
задан DemiSheep 22 May 2014 в 19:45
поделиться

4 ответа

Если программа была написана здравомыслящим человеком, вам, вероятно, понадобится stderr, а не stdout. Вы можете добиться этого, используя что-то вроде

foo 2> errors.txt

1
ответ дан 30 November 2019 в 15:47
поделиться

Используйте 2>, а не просто >.

1
ответ дан 30 November 2019 в 15:47
поделиться
echo yes | command > output.txt

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

4
ответ дан 30 November 2019 в 15:47
поделиться
command &> output.txt

Вы можете использовать &> для перенаправления как stdout, так и stderr в файл. Это сокращение для command > output.txt 2>&1, где 2>&1 означает "отправить stderr туда же, куда и stdout" (stdout - дескриптор файла 1, stderr - 2).

Для интерактивных команд я обычно не беспокоюсь о сохранении в файл, если я могу использовать less и сразу прочитать результаты:

command 2>&1 | less
41
ответ дан 30 November 2019 в 15:47
поделиться
Другие вопросы по тегам:

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