Разница между "> & log" и "> & log &" - PullRequest
0 голосов
/ 27 августа 2018

Я не понимаю, в чем разница между всеми этими командами в bash,

echo "Hello world" > log&
echo "Hello world" >& log
echo "Hello world" >& log&

Что делает каждая & делает?

Насколько я понимаю, ставить & в концеотправить все это на задний план.Но как насчет & после>?

Есть ли преимущество в написании

echo "Hello world" >& log&

вместо

echo "Hello world" > log&

1 Ответ

0 голосов
/ 27 августа 2018

В соответствии с Справочное руководство Bash , §3.6.4 «Перенаправление стандартного вывода и стандартная ошибка» , запись >& перенаправляет стандартный вывод и стандартную ошибку вместе.

В вашем конкретном примере я бы не ожидал, что echo "Hello world" напишет что-либо в стандартную ошибку, поэтому & ничего не меняет;но если бы он действительно записал что-либо как в стандартный вывод, так и в стандартную ошибку, то log закончится с обоими.

Кстати, для этого же раздела эквивалентная запись &>предпочтительнее >& (предположительно, потому что >& может быть перепутан с такими обозначениями, как >&1, что делает что-то совсем другое).

...