Ich habe in einem Unix-Buch nachgeschlagen, den Mann und die Wikipedia-Seite für, tr
konnte aber keinen Grund finden, warum es so entworfen/implementiert wurde, dass es nicht aus einer Datei, sondern strikt nur von der Standardeingabe liest. Beispielsweise lesen Tools wie wc
, grep
, sed
, und awk
alle problemlos Eingaben aus einer Datei, wenn diese bereitgestellt wird, oder von der Standardeingabe. Gab/gibt es einen zwingenden Grund, tr
es so zu entwerfen?
Antwort1
DerUNIX-Philosophieplädiert für „kleine, scharfe Werkzeuge“, daher ist die Antwort, dass das Lesen aus einer Datei eine aufgeblähte Angelegenheit wäre, die der UNIX-Philosophie zuwiderläuft. Die Antwort auf die Frage, warum wc
, grep
, sed
, awk
, usw. aus Dateien lesen, ist, dass sie alle Funktionen haben, die mehr als eine Eingabe oder Eingabeauswahl erfordern oder anderweitig direkten Zugriff auf die Dateien erfordern. Da tr
aus diesen Gründen nicht häufig verwendet wird, bleibt Ihnen eine der folgenden Formen, um Ihren Anforderungen gerecht zu werden;
tr ... < file
tr ... < file > file2
tr ... < file | sponge file