В чем разница между перенаправлением ./prog 2>&1 1>file.txt и ./prog >a.txt 2>&1? Похоже, что ./prog 2>&1 1>file.txt не сохраняет stderr в файл, а это ./prog >a.txt 2>&1 делает.

1 ответ1

4

Операторы перенаправления проверяются слева направо, таким образом,

 foo > bar 2>&1

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

 foo 2>&1 > bar

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

Коротко: первый перенаправляет как stdout и stderr на bar , второй перенаправляет только stdout на bar и stderr на терминал.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .