Причина, по которой вы видите это, состоит в том, что оболочка запускается с настройкой перенаправления, а когда вы используете >
, она очищает файл, на который вы перенаправляете. Поэтому в этом случае первое, что происходит, - это файл test
, который очищается. Затем он запускает команды. Так что теперь, когда test
является пустым файлом, cat test
также будет пустым, и поэтому tr
получит пустой ввод из канала, и, таким образом, ничто не будет перенаправлено в файл.