Разница между «command> log.txt» и «command 1> & log.txt» в командной оболочке Linux? - PullRequest
1 голос
/ 28 октября 2010

Когда я запускаю команду haizea -c simulated.conf > result.txt, программа (haizea) по-прежнему выводит свой вывод на экран.Но когда я пытаюсь haizea -c simulated.conf 1>& result.txt, вывод теперь находится в файле result.txt.Я совершенно запутался в этой ситуации.В чем же разница между > и 1>&, тогда?

Ответы [ 3 ]

4 голосов
/ 28 октября 2010

То, что вы видите на терминале, является стандартной ошибкой вашего процесса. Оба они по умолчанию направлены на одно и то же оконечное устройство (при условии, что перенаправление не введено в действие).

Перенаправление >&xyz перенаправляет оба стандартных вывода и error в файл xyz.

Я никогда не использовал его, но я бы подумал, что по расширению N>&xyz перенаправит дескриптор файла N и стандартную ошибку в ваш файл. Так что 1>&xyz эквивалентно >&xyz, что также эквивалентно >xyz 2>&1.

2 голосов
/ 28 октября 2010

Число перед > обозначает дескриптор.

Standard Input - 0
Standard Output - 1
Standard Error - 2

& будет направлять как стандартный вывод, так и стандартную ошибку.

http://linuxdevcenter.com/pub/a/linux/lpt/13_01.html#doc2ac15b1c13

1 голос
/ 28 октября 2010

> перенаправляет только стандартный вывод.

>& или &> или 1>& перенаправление оба стандартный вывод и стандартная ошибка.

Ваша программапечатает со стандартной ошибкой, которая не перенаправляется в случае 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...