shell-script-pt
[Top][All Lists]
Advanced

[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]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]