В чем разница между перенаправлением ./prog 2>&1 1>file.txt
и ./prog >a.txt 2>&1
? Похоже, что ./prog 2>&1 1>file.txt
не сохраняет stderr в файл, а это ./prog >a.txt 2>&1
делает.
1 ответ
4
Операторы перенаправления проверяются слева направо, таким образом,
foo > bar 2>&1
сначала перенаправляет стандартный вывод в bar
а затем перенаправляет стандартную ошибку в то место, где стандартный вывод перенаправляется в этой точке (таким образом, тоже bar
).
foo 2>&1 > bar
сначала перенаправляет стандартную ошибку на то, на что указывает стандартный вывод (скорее всего, на терминал), а затем перенаправляет стандартный вывод на bar
.
Коротко: первый перенаправляет как stdout
и stderr
на bar
, второй перенаправляет только stdout
на bar
и stderr
на терминал.