Perché il comando tr non legge dal file?


11

Ho cercato un libro Unix, l'uomo e la pagina di Wikipedia per trma non sono riuscito a trovare un motivo per cui è stato progettato / implementato in modo tale da non leggere dal file ma rigorosamente solo dallo standard input. Per esempio, strumenti come wc, grep, sede awktutti saranno felici di leggere l'input da file se fornito o dallo standard input. C'è / c'è un motivo valido per progettare in trquesto modo?


2
Non è stato codificato in questo modo, e la vita continua ... Ho il sospetto che debba essere un'altra volta con macchine con severe restrizioni di memoria, e tr è vecchio . Anche le utility Unix sono state progettate da più persone, e ci sono molte incoerenze e duplicazioni di funzionalità tra le utility.
Rui F Ribeiro,

3
solo per sottolineare: questa domanda è stata contrassegnata come principalmente basata sull'opinione pubblica ma IMHO non dovrebbe essere chiusa; abbiamo avuto domande simili a questa sul perché le cose siano implementate in qualunque modo abbiano risposte molto valide. vedi ad esempio unix.stackexchange.com/questions/6804/what-does-dd-stand-for o unix.stackexchange.com/questions/93773/why-is-sort-o-useful
strugee

2
Ora è fuori dalla coda delle recensioni, ma è ancora pericolosamente seduto su 4 voti ravvicinati - se ottiene l'ultimo, per favore fammi un ping qui per poter votare per riaprire.
Michael Homer,

3
@strugee Non sono d'accordo. Sì, noi che speculiamo di sicuro siamo solo opinioni ... ma dal momento che potrebbero esserci ancora persone là fuori che conoscono davvero - o ricordano di aver letto / ascoltato un account di prima mano - è una domanda a cui è possibile rispondere. Il 1970 non è molto tempo fa.
Baard Kopperud,

6
Unix ereditato trda Multics come un derivato della funzione integrata PL / 1 translate , che a sua volta era una generalizzazione di un TRcomando nell'architettura System / 360 (vedi IBM System-360 Green Card ). Vale la pena notare che l' implementazione di QNX potrebbe effettivamente leggere da un file tramite-r
don_crissti,

Risposte:


13

La filosofia UNIX è a favore di "strumenti piccoli e nitidi", quindi la risposta è che la lettura da un file sarebbe eccessiva contrariamente alla filosofia UNIX. Per quanto riguarda il motivo per cui wc, grep, sed, awk, ecc leggono dai file, la risposta è che tutti hanno caratteristiche che richiedono più di un ingresso o la selezione ha introdotto o richiedono l'accesso diretto ai file. Poiché trnon è comunemente usato per questi motivi, ti viene lasciato uno dei seguenti moduli per soddisfare le tue esigenze;

tr ... < file
tr ... < file > file2
tr ... < file | sponge file
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.