Как подключить вывод команды к файлу в Linux
Я запускаю задачу в CLI, которая запрашивает у меня ввод да/нет.
После выбора выбора на экране отображается большое количество информации, включая несколько ошибок. Я хочу передать этот вывод в файл, чтобы я мог видеть ошибки. Простой " > " не работает, поскольку команда ожидает ввода клавиатуры.
Я работаю на Ubuntu 9.1.
Ответы
Ответ 1
command &> output.txt
Вы можете использовать &>
для перенаправления как stdout, так и stderr в файл. Это сокращение для command > output.txt 2>&1
, где 2>&1
означает "отправить stderr в то же место, что и stdout" (stdout - это дескриптор файла 1, stderr - 2).
Для интерактивных команд я обычно не беспокоюсь о сохранении файла, если я могу использовать less
и сразу же прочитать результаты:
command 2>&1 | less
Ответ 2
echo yes | command > output.txt
В зависимости от того, как команда считывает его ввод (некоторые программы отбрасывают все, что было на stdin, прежде чем он отобразит приглашение, но большинство этого не делает), это должно работать на любой разумной CLI-среде.
Ответ 3
Используйте 2>
, а не только >
.
Ответ 4
Если программа была написана разумным человеком, то, что вы, вероятно, хотите, это stderr, а не stdout. Вы достигнете этого, используя что-то вроде
foo 2> errors.txt
Ответ 5
вы можете использовать параметр 2 > для отправки ошибок в файл.
пример:
команда 2 > error.txt
(использование опции 2 > ) --- посмотрите, будет ли их ошибка при выполнении команды, она отправит ее в файл error.txt.