Por que o comando tr não lê do arquivo?

10

Procurei um livro do Unix, o homem e a página da Wikipedia, trmas não consegui encontrar uma razão para que ele tenha sido projetado / implementado de tal forma que não leia do arquivo, mas estritamente apenas da entrada padrão. Por exemplo, ferramentas, como wc, grep, sed, e awktudo vai ler felizmente entrada de arquivo se fornecido ou da entrada padrão. Houve / existe uma razão convincente para projetar trdessa maneira?

mkc
fonte
2
Não foi codificado dessa maneira, e a vida continua ... Suspeito que deva ocorrer outra vez com máquinas com severas restrições de memória e tr é antigo . Os utilitários Unix também foram projetados por várias pessoas, e existem várias inconsistências e duplicação de funcionalidades entre os utilitários.
Rui F Ribeiro
3
apenas para salientar: esta questão foi sinalizada como primariamente baseada em opiniões, mas o IMHO não deve ser fechado; tivemos perguntas semelhantes a esta sobre por que as coisas são implementadas de qualquer maneira que tenham respostas muito válidas. veja, por exemplo, unix.stackexchange.com/questions/6804/what-does-dd-stand-for ou unix.stackexchange.com/questions/93773/why-is-sort-o-useful
strugee
2
Agora ela está fora da fila de revisão, mas ainda está perigosamente em 4 votos - se ela conseguir a última, faça um ping aqui para que eu possa votar para reabrir.
26616 Michael Homer
3
@ Strugee Eu discordo. Sim, nós especulamos com certeza que são apenas opiniões ... mas como ainda pode haver pessoas por aí que realmente sabem - ou se lembram de ler / ouvir uma conta em primeira mão - é uma pergunta que pode ser possível responder. 1970 não faz muito tempo.
Baard Kopperud 26/10/16
6
O Unix herdou trdo Multics como um derivado da função interna PL / 1 translate , que por sua vez era uma generalização de um TRcomando na arquitetura System / 360 (consulte IBM System-360 Green Card ). Vale notar que QNX implementação poderia realmente lidos de um arquivo via-r
don_crissti

Respostas:

12

A filosofia do UNIX defende "ferramentas pequenas e precisas"; portanto, a resposta é que a leitura de um arquivo seria uma inchação contrária à filosofia do UNIX. Quanto ao porquê wc, grep, sed, awk, etc lêem a partir de arquivos, a resposta é que todos eles têm características que requerem mais do que uma entrada ou seleção de entrada ou de outra forma exigir acesso direto aos arquivos. Como trnão é comumente usado por esses motivos, você fica com um dos seguintes formulários para atender às suas necessidades;

tr ... < file
tr ... < file > file2
tr ... < file | sponge file
user1133275
fonte