Перенаправление потока ввода / вывода в оболочке Linux. Как оболочка обрабатывает команду с перенаправлением?

В настоящее время я 'м, кодирующий небольшую оболочку (перенаправление, каналы, exec и т. д.). Попытка выяснить шаги, которые предпринимает оболочка Linux для решения проблемы перенаправления ввода / вывода.

Некоторые вопросы о том, что мне нужно помочь:

В каком направлении оболочка читает из командной строки, когда ищет перенаправление? Слева направо или наоборот? Использует рекурсию?

В каких случаях оболочка должна искать? (не уверен, есть ли много или просто пара, которая может включать в себя множество вариаций)

Во всяком случае, некоторые из них я могу думать (поправьте меня, если ям неправильно)

cmd > file1       # stdout of cmd goes to file

cmd file1 > file2 # stdout of cmd with file1 as an argument goes to file2

cmd file2 < file1 # stdin on file2 comes from file1

Теперь я неНе знаю процесс в следующих случаях (например, как оболочка ищет и обрабатывает их). Шаги, которые делает оболочка, мне неизвестны

cmd file2 > file3  < file1 # using "tee" in place of "cmd" I don't know
                           # how to do the dups and when to exec

cmd file2 < file3 > file1  # same ^

Ответы на вопрос(1)

Ваш ответ на вопрос