Я посмотрел книгу Unix, man и страницу в Википедии, tr
но не смог найти причину, по которой он был спроектирован/реализован таким образом, что он не читает из файла, а строго только из стандартного ввода. Например, такие инструменты, как wc
, grep
, sed
, и awk
все будут с радостью читать ввод из файла, если он предоставлен, или из стандартного ввода. Была/есть ли веская причина проектировать tr
таким образом?
решение1
TheФилософия UNIXвыступает за "маленькие, острые инструменты", поэтому ответ заключается в том, что чтение из файла будет раздуванием, противоречащим философии UNIX. Что касается того, почему wc
, grep
, sed
, awk
, и т. д. читают из файлов, ответ заключается в том, что у всех них есть функции, требующие более одного ввода или выбора ввода или иным образом требующие прямого доступа к файлам. Поскольку tr
обычно не используется по этим причинам, вам остается одна из следующих форм для удовлетворения ваших потребностей;
tr ... < file
tr ... < file > file2
tr ... < file | sponge file