Вопрос
Пожалуйста, подтвердите, если мои представления верны. Или исправьте, если неправильно и указатели на соответствующие технические статьи и документы будут оценены.
Они делают то же самое.
ls &>/tmp/01.log
ls 2>&1 >/tmp/02.log
ls > /tmp/03.log 2>&1
ls 2>&1 1>/tmp/04.log
Результат 5 будет таким же, как 1-4, на одноядерном процессоре, где в процессе не будет нескольких потоков выполнения. Если это может привести к другому результату, пожалуйста, помогите понять, что на самом деле происходит в каждом процессе и в ядре.
Для среды с многоядерными процессорами может случиться так, что когда поток в ядре пишет в стандартный вывод другой поток на другом ядре пишет в stderr, и они могут чередоваться?
ls 1>/tmp/05.log 2>/tmp/05.log
Ниже могут возникнуть ошибки, например, stderr пытается записать, но stdout еще ничего не выводит.
ls 1>/tmp/05.log 2>>/tmp/05.log
То же самое с 1 по 4 .
ls 1<&2 > /tmp/06.log
Результат тот же, что и с 1 по 4, хотя делать это бессмысленно.
ls 2>&1 | cat<&0>&1 > /tmp/07.log
Исследования