Procurei um livro Unix, o man e a página da Wikipedia, tr
mas não consegui encontrar uma razão pela qual ele foi projetado/implementado de tal maneira que não lê o arquivo, mas estritamente apenas a partir da entrada padrão. Por exemplo, ferramentas como wc
, grep
, sed
e awk
todas lerão alegremente a entrada do arquivo, se fornecida, ou da entrada padrão. Houve/existe uma razão convincente para projetar tr
dessa maneira?
Responder1
OFilosofia UNIXdefende "ferramentas pequenas e afiadas", então a resposta é que a leitura de um arquivo seria um inchaço, ao contrário da filosofia UNIX. Quanto ao motivo pelo qual wc
, grep
, sed
, awk
, etc leem arquivos, a resposta é que todos eles possuem recursos que exigem mais de uma entrada ou seleção de entrada ou, de outra forma, exigem acesso direto aos arquivos. Como tr
não é comumente usado por esses motivos, você terá um dos seguintes formulários para atender às suas necessidades;
tr ... < file
tr ... < file > file2
tr ... < file | sponge file