Então, muitas vezes sou culpado de executar cat
em um arquivo executável que é um arquivo binário e meu terminal geralmente faz alguns ruídos estranhos e não está feliz. Existe alguma convenção de nomenclatura aceita para dar uma extensão ao arquivo codificado binário/executável?
Eu tenho um arquivo executável (a saída de go build -o /tmp/api.exe .
e eu, como acabei de mencionar, acabei de chamá-lo de .exe, mas estou me perguntando se há uma maneira de verificar um arquivo antes de catá-lo para ver se é utf8 ou qualquer outra coisa.
A prática padrão de nomenclatura para executáveis é dar a eles o nome do comando que eles devem implementar:
ls
,cat
... Não há provisão para extensões que acabam sendo ignoradas na linha de comando.Para verificar o que um arquivo contém antes de alimentá-lo
cat
, executefile
nele:Isso me diz que
cat /bin/zgrep
não fará nada de estranho no meu terminal (ele nem mesmo contém sequências de escape, que são identificadas separadamente porfile
).Eu prefiro usar
less
em geral: ele avisará sobre arquivos binários antes de mostrá-los e não atrapalhará o terminal em nenhum caso. Também pode ser configurado para se comportar comocat
para arquivos curtos (veja a-F
opção).Como mosvy aponta, você pode tornar
cat
seguro o uso em binários adicionando a-v
opção, que substitui caracteres não imprimíveis por representações visíveis (^
eM-
prefixos). (Rob Pike considerou que essa opção é prejudicial - não por causa de seus efeitos no terminal, mas por causa de seu efeito no estilo de comando.)