Existem vários comandos e programas fornecidos pelo Linux para visualizar o conteúdo de arquivos. Trabalhar com arquivos é uma das tarefas assustadoras que 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.

Hoje, neste artigo, estaremos discutindo os comandos mais populares chamados head, tail e cat, a maioria de nós já conhece esses comandos, mas poucos de nós os implementam quando necessário.
1. Comando head
O comando head lê as primeiras dez linhas de qualquer nome de arquivo dado. A sintaxe básica do comando head é:
head [options] [file(s)]
Por exemplo, o comando a seguir exibirá as primeiras dez 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 primeiras dez 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 juntamente com um número inteiro que indica 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
Na verdade, não é necessário usar a opção ‘-n‘. Basta o hífen e especificar o número 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‘ seguido pelo número de bytes a serem exibidos. Por exemplo, o comando a seguir 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. Semelhante ao comando head acima, o comando tail também suporta as opções ‘n‘ número de linhas e ‘n‘ número de caracteres.
A sintaxe básica do comando tail é:
# tail [options] [filenames]
Por exemplo, o comando a seguir 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, tail 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 poucas 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 couber na tela atual.
A sintaxe básica do comando cat é:
# cat [options] [filenames] [-] [filenames]
O uso mais frequente do cat é ler o conteúdo de arquivos. Tudo o que é necessário para abrir um arquivo para leitura é digitar cat seguido de um espaço e do 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]
Também pode ser 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 ele.
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. Eu estarei aqui novamente com outro Artigo Interessante, que vale a pena Conhecer. 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/