linhas de comando e scripts com uso do cat na edição de arquivos textos ou dados passados pelo pipe |.
cat - concatena arquivo e lista o resultado na saída padrão
o cat vem no pacote coreutils, para instalar na maioria das distro instale o pacote: coreutils
o cat é muito utilizado para exibir conteúdo de arquivos.
cat arquivo.txt Arquivos de configuração do sistema. cat /etc/fstab cat /proc/cpuinfo cat /proc/meminfo
Exemplo para varrer todo o arquivo de log do squid pra localizar as ocorrencias da palavra correio:
cat /var/log/squid/access.log | grep correio
Existem outras opções, como o comando tail, o exemplo acima demonstra o uso do cat com "|" (pipe) passando o resultado do cat para o grep filtrar.
Para exibir contéudo de textos veja também os recursos de:
less = man less more = man more
Manual do comando cat:
cat - concatena arquivo e lista o resultado na saída padrão
man cat info cat cat --help
Algumas sugestões de pesquisa no Google:
Re: cat ~linux cat ~linux how to cat ~linux define:cat
Parte do man do CL 10
-v, --show-nonprinting Mostra os caracteres de controle exceto para LDF e TAB usando a notação `^' e precedendo os caracteres que têm o mais alto bit configurado com `M-'. -A, --show-all Equivalente a -vET. -E, --show-ends Lista um `$' ao final de cada linha. -T, --show-tabs Lista os caracteres TAB como `^I'.
Exibir caracteres de controle no arquivo; como final de linha ENTER cifrão ($) do final de linha, -t da tecla TAB, ^I das teclas CTRL+LETRA como (^LETRA).
cat -vet arquivo.txt cat -vET arquivo.txt
cat -A arquivo.txt
-A tem o mesmo resultado de -vET, veja no man cat
-A, --show-all equivalent to -vET
Alguns exemplos de comando e comparativos...
Mostrar o conteúdo do arquivo
cat cp.txt
Mosgtrar o conteúdo de todos arquivos .txt do diretório corrrente
cat *.txt
Somente dos arquivos que iniciam com manu*
cat manu*
Mostrar o conteúdo do arquivo com pausas na tela (more)
cat cp.txt | more
Mostrar o conteúdo do arquivo com pausas na tela (less)
cat cp.txt | less
Com linhas numeradas (somente na exibição), mostrar o conteúdo do arquivo com a numeração das linhas, inclusive as linhas em branco.
cat -n cp.txt | more
Ou o mesmo resultado com less:
less -N cp.txt
Numerar as linhas do resultado de ls
ls | cat -n ou
cat -n <(ls)
Salvar o resultado de ls em arquivo com linhas numeradas.
cat -n <(ls) > lsnumerado
Com detalhes, ls -la
cat -n <(ls -la) > lsnumerado ou
ls -la | cat -n > lsnumerado
com o comando find.
find /home/zago/guiaz | cat -n
Com linhas numeradas excluidas as linhas em branco
cat -b cp.txt | more
Exibir cararectes de controle, final de linha e etc..
cat -A cp.txt
Obtendo informações sobre sua máquina:
Para obter informações como IRQs, I/O Address, DMA etc, execute os seguintes comandos:
cat /proc/cpuinfo cat /proc/meminfo qual irq o device pci esta usando cat /proc/pci Ver quais irqs, DMA, e portas de i/o estão sendo usados: cat /proc/interrupts cat /proc/dma cat /proc/ioports cat /proc/pci
Veja também as outras informações disponíveis no /proc.
cat + grep pra filtrar resultados, exemplos:
cat /proc/meminfo | grep -i memtotal
cat /proc/cpuinfo | grep -i mhz
Obtendo varias informações:
cat /proc/cpuinfo | grep "model\|cpu\|processor"
cat /proc/cpuinfo | grep "model\|cpu\|processor\|MHz "
Parte do man do CL10
-b, --number-nonblank Numerar todas as linhas de saída diferentes de espaços, que comecem com 1. -e Equivalente a -vE. -n, --number Numera todas as linhas de saída, começando com 1. -s, --squeeze-blank Substitui todas as linhas adjacentes com espaços com uma única linha em branco.
Quando omitido o destino o resultado vai para saída padrão (console) não afeta o arquivo de origem, nem tem opção para alterar o próprio arquivo, quando precisa salvar o resultado, use redirecionadores (>) ou (>>).
Podemos redirecionar a saida para arquivo, como exemplo, remover linhas em branco repetidas e salvar o resultado em outro arquivo.
cat -s arquivo.txt > arqlimpo.txt
Aplicar os demais exemplos indicados no help, faça a troca de -s pela opção desejada.
cat não chega a ser um editor, da maneira como conhecemos, mas você pode gerar arquivos texto com ele, semelhante ao copy con do DOS.
Digite
cat > arquivo.txt
O cursor fica esperando você digitar algo. Tudo o que você digitar será inserido no arquivo.txt. Para finalizar a inserção de texto, digite CTRL+D.
Se quiser acrescentar algo ao final deste arquivo, digite
cat >> arquivo.txt
cat > nomedoarquivo moverá o cursor para a linha seguinte, escreva a linha, enter finaliza a linha e passar para linha seguinte, para finalizar o arquivo, salvar e sair, tecle enter e depois CTRL d (^d), no CL9 a única tecla de correção que encontrei foi a tecla BACKSPACE (retrocesso) para voltar e apagar caracteres na mesma linha.
Criar arquivos (scripts).
na linha de comando digite cat > nomedoarquivo, depois continue digitando os comandos, pra encerrar, salvar e sair, pressione CTRL+D simultaneamente, faça um teste com o exemplo abaixo, digite na linha de comando:
cat > testcat #!/bin/bash #coloque os comandos aqui, por exemplo: echo "neste exemplo executa um ls -la e exibe a data" ls -la date
quando terminar a digitação, pressione a tecla enter pra encerrar a linha depois simultaneamente as teclas CTRL D, pra salvar e sair, pra tornar o script executável:
chmod 0700 testcat
Pra executar o script:
./testcat
Desta maneira funciona no CL, alguns tutoriais indicam o uso de CTRL+Z, comigo deu problema, prefira CTRL+D.
Outro exemplo:
[root@faqcl10 zago]# cat >> testcat <<EOF > #!/bin/bash > #coloque os comandos aqui, por exemplo: > echo "neste exemplo executa um ls -la e exibe a data" > ls -la > date > EOF [root@faqcl10 zago]#
Pra encerrar a digitação, salvar e sair, digite EOF em maiusculas.
No primeiro exemplo com cat > testcat não funciona, no segundo exemplo o cursor fica com sinal ">", neste caso é só digitar EOF pra salvar e sair.
O exemplo acima trabalha no modo interativo, no exemplo abaixo sem interação e ideal para uar dentro de scripts, facilita muito na criação de arquivos de configuração, como exemplo, para criar o arquivo /etc/squid/direto.txt contendo duas linhas (.gov.br e www.zago.eti.br).
cat <<EOF > /etc/squid/direto.txt .gov.br www.zago.eti.br EOF
Notei que tem uma limitação em 127 linhas, caso seu texto tenha mais que isto, pode criar varios arquivos e juntar com cat arquivo >> arqdestino.
Quando omitido o destino, o resultado será exibido no terminal, para redirecionar o resultado para outro arquivo utilize os redirecionadores ">", com um redirecionador cria o novo arquivo, caso já exista o seu conteúdo anterior será apagado, para acrescentar novos dados utilize dois redirecionadores ">>".
Neste documento tem alguns exemplos para numerar linhas do arquivo, este efeito ocorre somente na tela e não afeta o arquivo, para numerar as linhas e salvar as mudanças em arquivo, precisa redirecionar a saida para outro arquivo, acrescente no final da linha de comando:
> arqnumerado
Ex com o cat:
cat -n comandos.txt > comandosnum.txt
Exemplo com o caminho onde deseja salvar:
cat -n comandos.txt > /home/usuario/meusdoc/comandosnum.txt
Listar as linhas numeradas contendo somente as ocorrencias de determinada palavra, facilita a localização pelo editor de texto, exemplo para listar somente as linhas que contém myhost no main.cf
cat -n /etc/postfix/main.cf | grep myhost
Este exemplo de redirecionar a saida se aplica a qualquer resultado de outros comandos que enviam o resultado para tela.
Numerar linhas recebidas pelo "|" pipe.
Descobrir quais as linhas do manual sobre o tar contém zip, veja que exibe as linhas numeradas, depois é só executar o man tar e ir direto na linha desejada.
man tar | cat -n | grep -i zip
[zago@faqcl9 zago]$ man tar | cat -n | grep -i zip 26 --exclude-from ARQUIVO ] [ -Z, --compress, --uncompress ] [ -z, --gzip, 27 --ungzip ] [ --use-compress-program PROG ] [ --block-compress ] [ 209 -z, --gzip, --ungzip 210 filtra os arquivos através de gzip
Esta dupla é muito utilizada em pesquisas por palavras em arquivos, para salvar o resultado em arquivo acrescente > mais o nome do arquivo. Segue alguns exemplos de comando.
Exibir arquivos de configuração sem as linhas comentadas (linha com # no inicio)
cat /etc/dhcpd.conf | grep -v \#
cat /etc/apache2/httpd.conf | grep -v \#
Salvar resultado em arquivo.
Juntar arquivos
Pegar dois arquivos texto para criar um terceiro, exemplo para junar a + b, criar c contendo a+b.
cat a b > c
Também pode dividir em varios comandos, o resultado abaixo é o mesmo do comando acima:
cat a > c cab b >> c
lembre que para acrescentar algo em arquivo já existente precisa usar dois redirecionadores para não apagar o que já existe, com um redirecionador ">" cria novo arquivo e perde o conteúdo pre-existente, com dois ">>" acrescenta o resultado do comando cat no final do arquivo destino, para acrescentar no inicio ou corpo do texto utilize ferramentas como tac, sed, awk ou outra mais apropriada.
Usando o cat para remontar aquivos divididos pelo split.
O comando split divide o arquivo em pedados, por default nomeia os pedaços no formato: xaa xab xac xad xae xaf e assim por diante até xzz, para remontar o arquivo, use o cat neste formato:
cat xaa xab xac xad xae xaf > arquivo_remontado
Simplificando:
cat xa[a-f] > arquivo_remontado
onde: [a-f] identifica o primeiro e ultimo pedaço, o primeiro pedaço deverá ser sempre idendificado por "a", neste exemplo a letra "f" identifica o ultimo pedaço "xaf", na tua linha de comando substitua o "f" pela letra que identifica o ultimo pedaço, tente com todo alfabeto [a-z]:
cat xa[a-z] > arquivo_remontado
Mantenha a ordem dos pedaços na remotagem, no arquivo novo são acrescentados um após o outro e no final do arquivo, siga sempre a regra:
cat part1 part2 part3 part4 > arquivoremontado
cat arquivo1 arquivo2 > arquivo3
man tac
tac - concatenate and print files in reverse
tac é um cat ao contrário, inverte a ordem, imprime do fim para o inicio do arquivo, de traz para frente.
a primeira linha vai para o lugar da ultima e vice-versa.
Redirecionar o resultado para arquivo e visualizar ao mesmo tempo no cosole.
tee
man tee
tee - lê da entrada padrão e grava na saída padrão
tee vem no pacote coreutils.
# rpm -qf /usr/bin/tee coreutils-5.2.1-62747cl
Exemplo para listar na tela e salvar o mesmo resultado em arquivo, listar tudo que foi acessado nas ultimas 24 horas no diretório /home/zago e também salvar o mesmo resultado em acessadosz.txt
find /home/zago -mtime -1 -type f | tee acessadosz.txt
Ver o conteudo de comandos.txt e salvar em comandosnum.txt o mesmo resultado que exibe na tela.
cat -n comandos.txt | tee comandosnum.txt
less é similar ao more, útil pra exibir conteúdo de arquivos texto, ele é chamado pelo man pra exibir as páginas do manual no formato:
less -is <pagina>
pra sair do man pressione "q" minusculo
q
Pode usar com ou sem formato "is" para ler qualquer texto, exemplo,
less cp.txt
less -is cp.txt
Ou informando o caminho do documento:
less -is /home/zago/guiaz/cp.txt
Numerar linhas:
less -N cp.txt
Tem muitas opções de uso, veja no manual:
man less
Para instalar procure pelo pacote: less
more - filtro para uso na visualização de arquivos em terminais
more <docmento-texto>
more comandos.txt
more /home/zago/guiaz/comandos.txt
Barra de espaço salta página, SHIFT + PageUp ou PageDown para voltar ou avançar telas.
Veja as páginas do more:
man more
Para instalar procure no pacote: util-linux
nl arquivo.txt
nl arquivo.txt > arqnumerado.txt
Tem diversas opções, veja mais sobre nl
info coreutils nl man nl info nl nl --help
echo mostrando arquivo como se faz com cat arquivo
echo "$(<arquivo.txt)"
echo "$(</tmp/guiaz/comandos.txt)"
Não entendi, na minha instalação SUSE 10.1, a falta do sinal (<) retorna o conteúdo do bash_history do usuário, mesmo informando o caminho e arquivo existente, e mesmo quando executado fora do home, a falta do < retorna o mesmo resultado de:
cat ~/.bash_history