Gerencie Arquivos Eficientemente Usando os Comandos head, tail e cat no Linux

Existem vários comandos e programas fornecidos pelo Linux para visualizar o conteúdo de arquivos. Trabalhar com arquivos é uma das tarefas desafiadoras, a maioria dos usuários de computador, seja iniciante, usuário regular, usuário avançado, desenvolvedor, administrador, etc., realiza. Trabalhar com arquivos de forma eficaz e eficiente é uma arte.

Manage Files in Linux

Hoje, neste artigo, estaremos discutindo os comandos mais populares chamados head, tail e cat, a maioria de nós já conhece tais comandos, mas muito poucos implementam quando necessário.

1. Comando head

O comando head lê as primeiras dez linhas de qualquer arquivo dado. A sintaxe básica do comando head é:

head [options] [file(s)]

Por exemplo, o comando a seguir exibirá as dez primeiras linhas do arquivo chamado ‘/etc/passwd‘.

# head /etc/passwd 

root:x:0:0:root:/root:/bin/bash 
daemon:x:1:1:daemon:/usr/sbin:/bin/sh 
bin:x:2:2:bin:/bin:/bin/sh 
sys:x:3:3:sys:/dev:/bin/sh 
sync:x:4:65534:sync:/bin:/bin/sync 
games:x:5:60:games:/usr/games:/bin/sh 
man:x:6:12:man:/var/cache/man:/bin/sh 
lp:x:7:7:lp:/var/spool/lpd:/bin/sh 
mail:x:8:8:mail:/var/mail:/bin/sh 
news:x:9:9:news:/var/spool/news:/bin/sh

Se mais de um arquivo for fornecido, o head mostrará as dez primeiras linhas de cada arquivo separadamente. Por exemplo, o comando a seguir mostrará dez linhas de cada arquivo.

# head /etc/passwd /etc/shadow

==> /etc/passwd <== root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin ==> /etc/shadow <==
root:$6$85e1:15740:0:99999:7:::
bin:*:15513:0:99999:7:::
daemon:*:15513:0:99999:7:::
adm:*:15513:0:99999:7:::
lp:*:15513:0:99999:7:::
sync:*:15513:0:99999:7:::
shutdown:*:15513:0:99999:7:::
halt:*:15513:0:99999:7:::
mail:*:15513:0:99999:7:::
uucp:*:15513:0:99999:7:::

Se for desejado recuperar mais linhas do que as dez padrão, então a opção ‘-n‘ é usada junto com um número inteiro informando o número de linhas a serem recuperadas. Por exemplo, o comando a seguir exibirá as primeiras 5 linhas do arquivo ‘/var/log/yum.log‘.

# head -n5 /var/log/yum.log

Jan 10 00:06:49 Updated: openssl-1.0.1e-16.el6_5.4.i686
Jan 10 00:06:56 Updated: openssl-devel-1.0.1e-16.el6_5.4.i686
Jan 10 00:11:42 Installed: perl-Net-SSLeay-1.35-9.el6.i686
Jan 13 22:13:31 Installed: python-configobj-4.6.0-3.el6.noarch
Jan 13 22:13:36 Installed: terminator-0.95-3.el6.rf.noarch

De fato, não é necessário usar a opção ‘-n‘. Basta o hífen e especificar o inteiro sem espaços para obter o mesmo resultado que o comando acima.

# head  -5 /var/log/yum.log

Jan 10 00:06:49 Updated: openssl-1.0.1e-16.el6_5.4.i686
Jan 10 00:06:56 Updated: openssl-devel-1.0.1e-16.el6_5.4.i686
Jan 10 00:11:42 Installed: perl-Net-SSLeay-1.35-9.el6.i686
Jan 13 22:13:31 Installed: python-configobj-4.6.0-3.el6.noarch
Jan 13 22:13:36 Installed: terminator-0.95-3.el6.rf.noarch

O comando head também pode exibir qualquer número desejado de bytes usando a opção ‘-c‘ seguida pelo número de bytes a serem exibidos. Por exemplo, o comando a seguir irá exibir os primeiros 45 bytes do arquivo fornecido.

# head -c45 /var/log/yum.log

Jan 10 00:06:49 Updated: openssl-1.0.1e-16.el

2. Comando tail

O comando tail permite exibir as últimas dez linhas de qualquer arquivo de texto. Similar ao comando head acima, o comando tail também suporta as opções ‘n‘ para número de linhas e ‘n‘ para número de caracteres.

A sintaxe básica do comando tail é:

# tail [options] [filenames]

Por exemplo, o comando a seguir irá imprimir as últimas dez linhas de um arquivo chamado ‘access.log‘.

# tail access.log 

1390288226.042      0 172.16.18.71 TCP_DENIED/407 1771 GET http://download.newnext.me/spark.bin? - NONE/- text/html
1390288226.198      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
1390288226.210   1182 172.16.20.44 TCP_MISS/200 70872 GET http://mahavat.gov.in/Mahavat/index.jsp pg DIRECT/61.16.223.197 text/html
1390288226.284     70 172.16.20.44 TCP_MISS/304 269 GET http://mahavat.gov.in/Mahavat/i/i-19.gif pg DIRECT/61.16.223.197 -
1390288226.362    570 172.16.176.139 TCP_MISS/200 694 GET http://p4-gayr4vyqxh7oa-3ekrqzjikvrczq44-if-v6exp3-v4.metric.gstatic.com/v6exp3/redir.html pg 
1390288226.402      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
1390288226.437    145 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html
1390288226.445      0 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html
1390288226.605      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
1390288226.808      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html

Se mais de um arquivo for fornecido, o tail irá imprimir as últimas dez linhas de cada arquivo como mostrado abaixo.

# tail access.log error.log

==> access.log <== 1390288226.042      0 172.16.18.71 TCP_DENIED/407 1771 GET http://download.newnext.me/spark.bin? - NONE/- text/html 1390288226.198      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html 1390288226.210   1182 172.16.20.44 TCP_MISS/200 70872 GET http://mahavat.gov.in/Mahavat/index.jsp pg DIRECT/61.16.223.197 text/html 1390288226.284     70 172.16.20.44 TCP_MISS/304 269 GET http://mahavat.gov.in/Mahavat/i/i-19.gif pg DIRECT/61.16.223.197 - 1390288226.362    570 172.16.176.139 TCP_MISS/200 694 GET http://p4-gayr4vyqxh7oa-3ekrqzjikvrczq44-if-v6exp3-v4.metric.gstatic.com/v6exp3/redir.html pg  1390288226.402      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html 1390288226.437    145 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html 1390288226.445      0 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html 1390288226.605      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html 1390288226.808      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html ==> error_log <==
[Sun Mar 30 03:16:03 2014] [notice] Digest: generating secret for digest authentication ...
[Sun Mar 30 03:16:03 2014] [notice] Digest: done
[Sun Mar 30 03:16:03 2014] [notice] Apache/2.2.15 (Unix) DAV/2 PHP/5.3.3 mod_ssl/2.2.15 OpenSSL/1.0.0-fips configured -- resuming normal operations

Da mesma forma, você também pode imprimir as últimas linhas usando a opção ‘-n‘ como mostrado abaixo.

# tail -5 access.log

1390288226.402      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
1390288226.437    145 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html
1390288226.445      0 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html
1390288226.605      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html
1390288226.808      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html

Você também pode imprimir o número de caracteres usando o argumento ‘-c’ como mostrado abaixo.

# tail -c5 access.log

ymantec.com:443 - NONE/- text/html

3. Comando cat

O comando ‘cat‘ é a ferramenta mais amplamente utilizada e universal. Ele copia a entrada padrão para a saída padrão. O comando suporta rolagem, se o arquivo de texto não se ajustar à tela atual.

A sintaxe básica do comando cat é:

# cat [options] [filenames] [-] [filenames]

O uso mais frequente do cat é ler o conteúdo dos arquivos. Tudo o que é necessário para abrir um arquivo para leitura é digitar cat seguido por um espaço e o nome do arquivo.

# cat /etc/passwd 

root:x:0:0:root:/root:/bin/bash 
daemon:x:1:1:daemon:/usr/sbin:/bin/sh 
bin:x:2:2:bin:/bin:/bin/sh 
sys:x:3:3:sys:/dev:/bin/sh 
sync:x:4:65534:sync:/bin:/bin/sync 
games:x:5:60:games:/usr/games:/bin/sh 
man:x:6:12:man:/var/cache/man:/bin/sh 
lp:x:7:7:lp:/var/spool/lpd:/bin/sh 
…

O comando cat também é usado para concatenar vários arquivos juntos.

# echo 'Hi Tecmint-Team' > 1 
# echo 'Keep connected' > 2 
# echo 'Share your thought' > 3 
# echo 'connect us [email protected]' > 4
# cat 1 2 3 4 > 5
# cat 5 

Hi Tecmint-Team 
Keep connected 
Share your thought 
connect us [email protected]

Pode ser também usado para criar arquivos. Isso é alcançado executando cat seguido pelo operador de redirecionamento de saída e o nome do arquivo a ser criado.

# cat > tecmint.txt

Tecmint is the only website fully dedicated to Linux.

Podemos ter um marcador de fim personalizado para o comando ‘cat’. Aqui está implementado.

# cat > test.txt << end 

I am Avishek 
Here i am writing this post 
Hope your are enjoying 
end
# cat test.txt 

I am Avishek 
Here i am writing this post 
Hope your are enjoying

Nunca subestime o poder do comando ‘cat’ e pode ser útil para copiar arquivos.

# cat avi.txt

I am a Programmer by birth and Admin by profession
# cat avi.txt > avi1.txt
# cat avi1.txt

I am a Programmer by birth and Admin by profession

Agora, qual é o oposto de cat? Sim, é ‘tac’. ‘tac’ é um comando no Linux. É melhor mostrar um exemplo de ‘tac’ do que falar qualquer coisa sobre isso.

Crie um arquivo de texto com os nomes de todos os meses, de modo que uma palavra apareça em uma linha.

# cat month

January
February
March
April
May
June
July
August
September
October
November
December
# tac month

December
November
October
September
August
July
June
May
April
March
February
January

Para mais exemplos de uso do comando cat, consulte o 13 Uso do Comando cat

Isso é tudo por agora. Estarei aqui novamente com outro Artigo Interessante, que vale a pena Saber. Até lá, fique ligado e conectado ao Tecmint. Não se esqueça de nos fornecer seu feedback valioso na nossa seção de comentários.

Source:
https://www.tecmint.com/view-contents-of-file-in-linux/