[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Saber se um arquivo é um arquivo texto.
From: |
Elder Marco |
Subject: |
Saber se um arquivo é um arquivo texto. |
Date: |
Tue, 16 Dec 2008 14:55:24 -0200 |
Olá,
Bom, num dos meus primeiros scripts, eu decidi escrever algo que pudesse me
ser útil. Não raro, dou um cat em um arquivo texto para saber seu conteúdo,
mas preciso usar algumas opções do cat (como mostrar o número da linha) ou
conectar a saída do comando para o less. De vez em quando eu também dou um
vacilo e acabo dando um cat em um arquivo que não é texto ... :(
Então decidi fazer um script que recebe um ou dois parâmetros. Se receber
dois, o primeiro será um parâmetro para o comando cat ou um comando que
envia a saída dele para o lesse e o segundo será o arquivo que deve ser
lido. O que eu preciso saber, além de outras coisas, é se esse arquivo é ou
não um arquivo texto. Primeiramente pensei em inserir algo da seguinte
maneira:
if [ ! -n $(file $ARQUIVO | grep text ) ; then
echo "$ARQUIVO não é um arquivo texto "
exit 1
fi
(eu não fechei o if acima porque esse bendito teclado aqui está
desconfigurado no momento em que escrevo e não consigo achar a tecla que
fecha os colchetes!)
No entanto, eu percebi que isso nem sempre pode funcionar pois o comando
file pode lidar com algum arquivo texto e não necessariamente ter um "text"
na sua saída (por exemplo, o /etc/sudoers no Fedora 8). E convenhamos, isso
é muita gambiarra não é? :-)
Uma opção que achei útil --- e é aqui que está a minha dúvida --- é a opção
-f do comando test que verifica se um arquivo é um arquivo regular.
O que significa exatamente um arquivo ser um arquivo regular? Eu poderia
utilizar isso para saber se o arquivo é ou não um arquivo texto (e portanto
poderia ser lido com o cat)? Ou existe uma forma mais elegante de saber
isso?
Abs
--
Elder Marco
Linux User: #471180
"O conhecimento é tristeza: aqueles que mais sabem são os que mais
profundamente devem lamentar a mais fatal verdade, a árvore do conhecimento
não é a da vida." (Versos extraídos da tragédia Manfred, de Byron e citado
por Nietzsche em "Humano, demasiado humano")
[As partes desta mensagem que não continham texto foram removidas]
- Saber se um arquivo é um arquivo texto.,
Elder Marco <=
Re: [shell-script] Saber se um arquivo é um arquivo texto., Antônio Flávio, 2008/12/16
Re: [shell-script] Saber se um arquivo é um arquivo texto., Julio C. Neves, 2008/12/17