Przekierowanie strumienia I / O w powłoce Linux. W jaki sposób powłoka przetwarza polecenie z przekierowaniem?

Obecnie koduję małą powłokę (przekierowanie, potoki, exec itd.). Próbowałem dowiedzieć się, jakie kroki podejmuje powłoka Linux przy adresowaniu przekierowania we / wy.

Kilka pytań na temat tego, czego potrzebuję pomocy:

W jakim kierunku powłoka czyta z linii poleceń, gdy szuka przekierowania? Od lewej do prawej lub odwrotnie? Używa rekursji?

W jakich przypadkach muszla szukać? (nie jestem pewien, czy jest ich wielu lub tylko kilka, które mogą obejmować wiele odmian)

Tak czy inaczej, niektórzy, o których myślę, są (popraw mnie, jeśli się mylę):

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

Teraz nie znam procesu w następujących przypadkach (jak w tym, jak powłoka szuka i obsługuje je). Kroki, które wykonuje powłoka, są mi nieznane

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 ^

questionAnswers(1)

yourAnswerToTheQuestion