Почему такое поведение при дублировании файлового дескриптора?

#unix #descriptor

#unix #дескриптор

Вопрос:

На данный момент я изучаю файловые дескрипторы в unix:

 echo 'bat' 1>amp;1 | sed 's/b/c/'
echo 'bat' 2>amp;1 | sed 's/b/c/'
 

Первая строка возвращает «cat cat», а вторая строка возвращает «bat cat», поэтому я изо всех сил пытаюсь понять, что происходит.
Во второй строке FD2 (STDERR) перенаправляется на FD1 (STDOUT), который ничего не выводит. Затем он выводит bat в FD1 И передает другой bat в sed, так что мы получаем bat и cat.
Почему та же логика не работает для первой строки? Разве он не будет выводить bat в стандартный вывод, а затем передавать другой bat в sed для вывода «bat cat»?

Комментарии:

1. Оба должны возвращать cat один раз, поскольку вывод bat передается в sed и преобразуется в cat?

2. это zsh. каждая команда возвращает дважды, с разными результатами!