Primeiras aulas do curso Certificação Linux LPI Essentials parte 7: Searching and Extracting Data from Files

Certificação Linux LPI Essentials parte 7: Searching and Extracting Data from Files

Como obter informações sobre arquivos - Os comandos wc e more

[00:00:00] Nessa nova sessão da prova Linux Essentials, o que vamos falar é sobre diversas maneiras de trabalhar com o conteúdo de arquivos ou de entrada e saída de programas. Eu estou dando informações para o programa, recebendo saída de um programa, lendo arquivos e procurando informações dentro desses arquivos. Tudo isso nós vamos falar nesta sessão.

[00:00:23] Essa seção que se chama, buscando e extraindo informações de arquivos, apesar que não vai ser necessariamente só com arquivos que vamos trabalhar, vamos trabalhar também com filtros e com fluxos de um programa para outro. Então não é só no arquivo que vamos trabalhar. Primeiro passo, temos aqui algumas áreas que temos que conhecer e diversos programas, vou primeiro trabalhar com a maneira mais tradicional de ver um arquivo.

[00:00:51] Vamos pegar lá no nosso Linux, abri aqui e estou no meu terminal, diretório base e agora vou pegar um texto. Então vou entrar no Firefox, abrir o site do blog.alura.com.br e vou copiar o texto deste último post que tenho aqui, não vou pegar as imagens, vou pegar só o texto para nós criarmos um arquivo de texto com um texto razoável. Cliquei na direita e copiei.

[00:01:31] Vou fechar ele e abrir o gedit e vou colar o texto aqui dentro de um arquivo de texto normal, vou salvar e chamar o arquivo de post-do-blog.txt. Salvei o arquivo e vou ver como ele está aqui, ls post-do-blog.txt e está lá. Com mais detalhes, ls -l post-do-blog.txt e está ali para nós, com 5517 bytes, quantas palavras tem aí? gedit post-do-blog.txt, não faz sentido ter que ficar contando as palavras na mão.

[00:02:34] Então repara que por muito tempo era comum usarmos arquivos de texto dessa maneira, como o texto puro, solto, e ainda usamos em diversas situações, por isso em certas situações é comum eu querer contar o número de palavras e não o número de bytes que eu tenho em um arquivo. Contar em inglês é count, palavras é word, para abreviarmos isso, wc post-do-blog.txt.

[00:03:04] Ele vai falar para nós que esse arquivo tem de verdade 5517 bytes, está aqui informação, ele tem 851 palavras e ele tem 110 linhas. Então, às vezes, quando estamos trabalhando com arquivos de texto, por exemplo, código fonte de um programa ou alguma coisa do gênero, e queremos descobrir o número de linhas e até mesmo mais comum do que o número de palavras, quero descobrir o número de linhas de um arquivo.

[00:03:29] Então o wc, word count, vai me dizer pelo nome do arquivo que eu passar como parâmetro, tanto o número de bytes, o número de palavras e o número de linhas. Vamos dar uma olhada na informação do wc. O wc tem algumas informações, por exemplo, mostrar o count só de bytes ou de caracteres, ou de linhas ou imprimir, por exemplo, o tamanho da linha mais longa, com -L, vamos ver o -L maiúsculo.

[00:03:57] Então wc -L post-do-blog.txt, ele está falando que a linha mais longa desse texto tem 341 caracteres, então para que ser o wc? Ele serve para trabalharmos com o arquivo de texto e tirarmos informações sobre ele, por exemplo, quero imprimir esse arquivo de texto em uma impressora tradicional, se vou ter que quebrar a linha no caractere 80, por exemplo, quer dizer que essa linha 341 vai ficar quebrada em várias linhas.

[00:04:27] Talvez fique boa a quebra ou talvez fique ruim, por exemplo, se é um texto normal, tudo bem quebrarmos e irmos para próxima linha, pode até usar hifenização. Agora se é um código de programação, nós não podemos quebrar um código de programação em qualquer lugar de uma linha, tem que ter um caractere específico para quebrarmos a próxima linha, para deixarmos a quebra em um momento específico que a linguagem não vai ter problema.

[00:04:50] Então repara que esse tipo de informação o wc dá para nós, por exemplo, o número de bytes que nós vimos, o número de palavras, número de linhas e o número máximo de caracteres que nós temos em uma linha única e diversas outras informações que o wc é capaz de dar para nós. Por padrão, ele forneceu essas que nós pedimos, tem aqui o número de palavras, o tamanho máximo de linhas, número de linhas, número de caracteres e números de bytes.

[00:05:18] E repare que quando chamamos o wc, colocamos a opção e o nome dos arquivos, então se tenho mais de um arquivo, por exemplo, wc eu quero contar tanto o arquivo post-do-blog.txt quanto o programa .c e aí ele mostra para mim que o arquivo post-do-blog.txt tem 5517 bytes, 851 palavras e 110 linhas. Já o programa .c tem 68 bytes, 10 palavras e 6 linhas.

[00:05:48] No total, Guilherme, de tudo que você está analisando, nós temos 5585 bytes, 861 palavras, 116 linhas, então o wc pode ser bastante utilizado quando estamos trabalhando com scripts que estão analisando informações sobre as linhas e palavras de arquivos de texto, bastante utilizando. Mas, além disso, além de saber qual é o conteúdo do meu post em questão de estatísticas numéricas de quantas linhas existem, etc.

[00:06:18] Eu quero ver esse conteúdo e para ver esse conteúdo, uma primeira maneira de fazer isso é falar para ele, esse arquivo, o post-do-blog.txt eu não consigo executar, é porque não é para executar o post-do-blog.txt, quero ver o que tem lá dentro, me mostra o que tem dentro desse arquivo. Então vamos ver três maneiras diferentes de ver todo o conteúdo de um arquivo.

[00:06:42] Na primeira vou usar um programa chamado more, de mais, quero mais do post-do-blog.txt e ele mostra para nós, entre aspas, a primeira página, o que é a primeira página? É o quanto cabe no meu terminal, podemos falar para ele no more, nas opções dele: “Não, quero só ver dez linhas por vez, cinquenta por vez”, por padrão ele preenche a sua tela inteira, o número de linhas para preencher sua tela, seu terminal, então ele preencheu aqui para mim.

[00:07:10] Tenho a minha tela e eu posso ir descendo com a seta para baixo? Não. Com a seta para cima? Não. Para a esquerda? Não. Para a direita? Não. Como eu navego no more então? O que eu posso fazer é dar um “Enter” e o “Enter” vai linha a linha, vou lendo cada uma das minhas linhas que estão sendo visualizadas, com o “Espaço” ele joga uma tela inteira para baixo, ele pula uma tela inteira para baixo como se eu tivesse lido a tela inteira.

[00:07:38] Se eu quiser voltar para a tela anterior eu aperto a tecla “B”, b de back, voltar atrás. Então “Espaço” para ir uma tela inteira para a frente, “B” de back para ir uma tela inteira para trás. Se eu tenho mais um pouco e não tenho uma tela inteira, dei o para trás e não consegui o “B”, o “B” não funcionou porque não tenho mais uma página ali para trás e eu não tenho a seta para voltar para trás, azar o meu, no more não funciona a seta.

[00:08:04] Então tenho o “Enter” para ir linha a linha, “Espaço” para ir uma página inteira e o “B” para voltar uma página, são os casos mais clássicos. Temos o “Q” para sair, a letra “Q” de quit para sair, posso voltar para o meu more. O “H” para pedir ajuda, então ele mostra diversas opções que podemos usar para trabalharmos nesse nosso arquivo, eu posso ir para diversos momentos, posso ir várias linhas para baixo com o “S”.

[00:08:34] posso ir com o “F” diversas páginas para baixo, diversas coisas que podemos fazer. Vou sair aqui do meu help, vou apertar o “Q” e saí completamente do programa. Voltei para o more, agora o que quero fazer é procurar uma palavra aqui dentro, sei que aqui dentro escrevi a palavra SQL, então vou usar o caractere barra para procurar alguma coisa. Repara que aqui embaixo ele mostrou o barra.

[00:08:56] Estou procurando as palavras “sql” e aí ele procura para mim o sql, ele não achou o sql. Mas, Guilherme, o SQL está aqui em cima, você está vendo a palavra SQL. Maiúsculo, então ele é case sensitive, /SQL. Agora ele achou, aqui a palavra SQL, então repare que eu tive dificuldade para encontrar a palavra SQL que ele achou, foi bem chatinho mesmo de achar essa palavra.

[00:09:29] O meu próximo caso que quero mostrar é que quero pedir para ele editar esse arquivo, por favor, use o editor para mim, o VI, para editar esse arquivo. Então eu aperto a tecla “V” para entrar no VI. Repare que ele está aqui no momento onde eu estava, na minha primeira linha da minha tela e ele abriu para eu editar, bem onde eu estava. Se eu estou no editor, no VI, eu trabalho normalmente como o VI funciona, quando quero sair do VI eu aperto :q.

[00:09:57] Quando dou o “Enter” ele voltou para o more na posição que eu estava, agora posso continuar navegando no more, com “Espaço”, com o “B” para voltar um pouco, com o barra para procurar uma palavra, Alex, achei aqui Alexandre Saudate e por aí vai; Então vimos o “Enter” para ir para a próxima linha, o “Espaço” para ir uma página para baixo, o “B” para voltar uma página, o barra para procurar uma palavra, o “V” para ir para o VI e aí posso sair do VI.

[00:10:28] Salvar e sair do VI. Eu posso também executar um comando específico, queria executar um comando aqui dentro, estou lendo esse texto, estou me interessando por esse texto e eu falo: “Nossa, baseado nisso aqui eu gostaria de executar um comando”, então repare que os editores de texto antigos e tradicionais estão muito baseados na questão de executar comandos, por quê? Porque nós estávamos trabalhando sempre no terminal.

[00:10:50] Estávamos muito acostumados a trabalhar sempre no terminal, então aqui é isso que ele está fazendo, nós temos aqui o nosso arquivo que está lendo e baseado nisso eu queria executar alguma coisa, então colocamos, !ls, o comando que quero executar, e ele executou o comando ls para mim, o resultado do ls está aí. Eu continuo navegando com “Espaço” normalmente no meu more, quando o arquivo acaba ele sai do more, ele não fica esperando, ele sai.

[00:11:20] Acabou o programa, ele saiu do more. Então nós vemos diversas opções de trabalharmos com o more para ler um arquivo, para ler as informações que nós temos de um arquivo. Quando nós usamos o more, repara que nós falamos para ele o arquivo que nós estamos querendo ler, quando olharmos aqui temos o nosso arquivo more post-do-blog.txt, o uso mais comum do more é assim, more e o nome de um arquivo.

[00:11:46] E aí vemos as coisas que queremos ou procuramos uma palavra específica, esse é o uso mais comum do more. Repara que ele achou a palavra bem no final do arquivo e então ele já saiu do more para mim, então esse é o uso mais comum do more. Posso usar o more com dois arquivos? Posso. more programa.c post-do-blog.txt, então ele está mostrando aqui para mim.

[00:12:06] Primeiro o programa.c, repare que ele mostrou só o programa.c, porque só coube isso, só tenho isso, não tenho muito mais que isso e ele está falando: “Olha, o próximo arquivo é o post-do-blog.txt”. Apertei o “Espaço” e ele está mostrando agora o post-do-blog.txt, então o more pode também receber diversos arquivos e se você for no help você vai ver que ele tem opções, bem aqui, :n e :p.

[00:12:29] Para você também ir para o próximo arquivo ou voltar para o arquivo anterior, só que já é bem incomum nós usarmos o more para abrir vários arquivos ao mesmo tempo, é bem incomum, não é tão comum assim não. Mais comum é o more em um único arquivo, por isso vimos diversas opções de como ler com o more. Ainda tem alguns casos muito chatos porque por mais que eu esteja abrindo o more assim, eu não consigo nem usar seta.

[00:12:52] Que é extremamente natural usar a seta para baixo e a seta para cima para navegar no arquivo, muito básico, e diversas outras funções que poderiam ser adicionadas ao more. Então na prática o que acontece é que o more pode ser utilizado e é utilizado algumas vezes, mas existem outros visualizadores e leitores de arquivo ou de fonte, seja a fonte que for, que nós acabamos usando no dia a dia, nós vamos ver eles daqui a pouco.

[00:13:15] Porque a prova vai nos cobrar eles para nós.

Como obter informações sobre arquivos - Lendo arquivos com o less

[00:00:00] Nós já vimos o uso do more para ler arquivos ou ver o que o more está mostrando para nós navegarmos naquela formação. A prova vai cobrar de nós o wc, que já falamos, mas, também o less, que seria como uma evolução do more, uma brincadeira de que menos é mais. Então less é o que veio depois do more. Então como faço para usar o less? Mesma coisa, less post-do-blog.txt.

[00:00:25] Agora estou no less post-do-blog.txt, como é que navego nele? Você vai ver que basicamente o que nós usávamos no more também vai funcionar aqui no less. Então se quero ir para a linha de baixo, pressiono “Enter”. Se quero pular uma página, a função “Espaço”. Se quero voltar para a página anterior, função “B”. Então repare que vários funcionam da mesma maneira, mas se eu quiser descer só uma linha, além do “Enter” tem o para baixo.

[00:00:51] Se eu quiser subir uma linha, tem o para cima, existem outros atalhos sem ser a seta para cima e a seta para baixo. Existe também o “E” para descer e o “J” para descer, tanto “E” quanto “E” descem uma linha. Assim como tanto o “Y” quanto o “K”, sobem uma linha, não precisa ficar decorando todos esses atalhos, eu acredito que o que nós gostaríamos de saber no dia a dia é que nós podemos usar a seta com o less.

[00:01:18] E ficar feliz que com o less é natural usar a seta, apesar de que se você olhar o “J” e o “K”, o “J” descer uma linha e o “K” subir uma linha, poderia ser natural. Algumas pessoas irão gostar do “J” e do “K”, porque eles estão um do lado do outro. Já o “E” e o “Y”, que tem uma certa distância, seria mais questionável, mais porque cada mão vai estar em uma tecla, etc., na prática eu uso bastante a seta para cima e para baixo.

[00:01:44] Além do “Espaço” para pular uma página, nós temos o “F” para dar um Full Screen. O “F” também pula uma página, assim como o “B” pulava para a página anterior. Se quero voltar tudo para o começo do arquivo, eu posso apertar a tecla “Home” ou se estou lá embaixo pode apertar a tecla “g”, “g” minúsculo volta lá para o começo, se “Home” ou “g” volta para o começo, como será que chego no final? Posso apertar a tecla “End” e fui para o final, vamos para o começo?

[00:02:23] Tecla “Home” ou tecla “g”. Se a tecla “g” vai para o começo, qual é a tecla que vai para o final? A tecla “Shift + G” vai para o final do arquivo. “g” para subir, “G” para descer. Até porque, no meu teclado, eu estou com teclado de MAC, sem o “Home” e o “End” aqui, eu tenho também um teclado que é o de Windows conectado, não dá para mostrar pois ele é com fio e aí sim ele tem o “Home” e o “End” que eu posso usar também.

[00:02:57] Então nós temos essas teclas para navegar no arquivo, mas aí você fala, quero ir mais ou menos na metade do arquivo para continuar lendo ou para começar a ler, você aperta “P” e aí você fala p50 e então nós estamos em 50% do arquivo e continua lendo. Então você pode pular para uma certa parte do arquivo. O “H”, assim como no more, vai mostrar para nós a informação.

[00:03:19] Mas ele fala: “Olha, você pode apertar “Enter” para ver mais ou “Q” para sair desse seu help” e então você desce normalmente no seu less novamente. Para sair do less é a mesma letra “Q”, vamos voltar para o less agora. Para buscar, a mesma tecla “barra”, posso buscar novamente aqui “/SQL”, repare o que ele fez, o less é um pouco mais esperto que o more na busca, aliás ele é bem mais esperto.

[00:03:48] Primeiro ele destaca a palavra SQL aqui, para dizer: “Olha, foi esse SQL que eu achei”. Segundo, ele coloca a linha que tem o que foi encontrado lá no topo, exceto se estiver no fim do arquivo. Vamos dar uma olhada. Então ele colocou lá no topo, então fica bem mais destacado para mim o que foi que ele encontrou do que lá no caso do nosso more. E se eu quiser procurar de novo o SQL é só apertar a tecla “N” de next, ele procura o próximo.

[00:04:17] Se lembra que eu falei quando chegar no final do arquivo vai ser um pouco diferente? Chegou no final do arquivo e ele achou a palavra SQL e mostrou para mim, mas não ficou exatamente lá no topo e esses estilos aqui são caracteres que não são usados, são linhas que acabou o arquivo, só estou mostrando para você poder visualizar.

[00:04:36] Então vimos isso e se eu quiser buscar para trás? Busquei para frente com a “barra”, se “barra” vai para a frente, “Shift + Barra” que é? É o ponto de interrogação no teclado americano, busca para trás. Então vou buscar SQL para trás ele acha o primeiro SQL, vou sair aqui do meu less e começar do zero. Agora tem uma sacada um pouco chata da busca e eu acredito que é difícil de ser cobrado detalhes do gênero, mas é importante sabermos que o “barra” busca para frente, então busquei SQL para frente.

[00:05:13] “N” vai para o próximo, já que estou em uma busca para frente, o “N” vai para o próximo, “Shift + N” volta para o anterior, já que a busca está indo para a frente, “Shift + N” volta para cima, busca para trás, tudo bem? Vou sair novamente, vou começar e vou para o final do arquivo, “Shift + G”, estou no final do arquivo, quero procurar a palavra SQL debaixo para cima, então “Shift + barra”.

[00:05:43] No teclado americano, “Shift + barra” é ponto de interrogação, por isso na verdade o caractere é o ponto de interrogação, não é “Shift + barra”. Se você tiver outro caractere aí no “Shift + barra”, não é, é o ponto de interrogação. Então o ponto de interrogação vai buscar em vez de ir para a frente, vai buscar para trás. Então busco a palavra “SQL” para trás. Então assim como eu tinha “barra” para buscar de cima para baixo, o ponto de interrogação busca de baixo para cima, agora se o “N” buscava o próximo na ordem que ele estava buscando.

[00:06:14] Se eu usar o “N” agora ele vai buscar debaixo para cima o próximo SQL, então “N” de next é siga a ordem de busca atual para buscar a próxima aparição dessa palavra e o “Shift + N” então vai buscar no sentido contrário, está buscando para baixo agora. então repare que o “N” e o “Shift + N” irão depender se a sua busca é de cima para baixo com a “barra” ou de baixo para cima com o ponto de interrogação, isso que é importante aqui de nós trabalharmos.

[00:06:47] Então esse é o nosso less com a navegação através da “barra”. Assim como no more o “V” vai abrir o nosso editor, vou apertar o “V” ele foi para o editor e foi para o nano, por que ele foi para o nano? Vamos sair daqui, vamos sair do less com o “Q”, por fim, se eu editar novamente o arquivo, saí e editei novamente, se eu quiser editar esse arquivo e não apenas visualizar, editar ele, eu estou aqui olhando e quero editar, vou usar a tecla “V”.

[00:07:15] E a tecla “V” abriu aqui para mim o meu nano, pois eu estou usando nano para edição, então ele abriu o meu nano, tudo bem? Importante aqui é que independente do nano ou VI aqui no meu caso, a tecla “V” é quem abre o editor. Então “Ctrl + X” para sair do nano e “Q” para sair do nosso less. Tanto o more quanto o less podem dar alguns problemas, eu estou aqui dando um less, fazendo alguma coisa e eu executei algum comando.

[00:07:38] !ls, por algum motivo executei e eu queria só terminar aqui. Return e se por algum motivo a tela ficar bagunçada, porque às vezes a tela fica bagunçada e o terminal está bagunçado, alguma coisa foi cuspida aqui fora da posição, não era para ter sido cuspido. Então tanto no less quanto no more, nós podemos pedir para ele redesenhar a tela, para ele redesenhar a tela “Ctrl + L”, ele redesenhou a minha tela.

[00:08:06] No nosso caso não faz diferença porque não está cuspindo informação aqui, não está zoando a nossa tela, tanto no more quanto no less, o “Ctrl + L” atualiza a nossa tela. Somente no less o “R” redesenha a tela, então repare que se eu sair daqui, quando dei o meu less, fui na minha tela, no meu visualizador do arquivo e usei o “Ctrl + L” para atualizar a tela. Se eu usar o “Ctrl + L” aqui, o que eu faço? Eu limpo a tela, se lembra desse atalho?

[00:08:34] “Ctrl + L” limpa a nossa tela e repare que o resultado daquele comando que nós tínhamos dado no less, se lembra do !ls assim como no more, mostrou o resultado para mim, dei um return, saiu e na hora que eu saí do less, olha aqui o resultado daquele nosso programa, esse aqui é o resultado do mashel que foi executado dentro do nosso less.

[00:08:53] Então com isso nós vimos diversas características do less, nós vimos que ele funciona como no more, com o “Enter”, com o “Espaço”, com o “B”, com o “barra” para buscar, com o “H”, com o exclamação, vimos tudo isso. Mas vimos também que ele vai além, ele usa a seta para baixo e para cima, para ir uma linha para cima e uma linha para baixo, ele usa também o “F” para pular uma página inteira para baixo, como no more ele usava o “B” para pular uma página para cima.

[00:09:18] Nós vimos também que ele usa o ponto de interrogação para buscar da posição atual para cima e o “barra” para buscar da posição atual para baixo. O “N” encontra a próxima ocorrência na ordem que você está procurando, debaixo para cima ou de cima para baixo. O “Shift + N” na ordem inversa, nós vimos que o “g” ou o “Home” vai para o começo do arquivo.

[00:09:39] “G” ou “End” vai para o final do nosso arquivo, a letra “P” permite que nós vamos para uma posição de acordo com a porcentagem, “p50” vai para 50%, para o meio do arquivo. E quando nós fazemos a busca, ele destacava o resultado da busca muito melhor que o more, então na prática nós acabamos usando muito mais o less do que o more.

[00:09:58] E assim como no nosso caso do more, nós podemos dar um man no less e ver as diversas opções que ele tem aqui para nós, tem muita opção aqui para trabalhar. Na prática, o uso mais comum do less é, de novo, less programa.c. Posso tentar dois, programa.c e post-do-blog.txt? Posso. Diferentemente do more, quando chega no final de um arquivo, você dá “Enter”, “Espaço” ou próximo.

[00:10:22] Ele não vai automaticamente para o próximo arquivo, você tem que explicitamente falar, por favor, vai para o next file, :n próximo arquivo, :p previous file para o arquivo anterior. Tem outras maneiras de navegar entre arquivos, você pode ver tudo isso no help, não deve ser cobrado na prova porque no uso tradicional do nosso less, o que fazemos, usamos somente “Q” para sair, usa somente o less o nome de um arquivo.

[00:10:54] Na prática usamos muito o less como único arquivo para visualizarmos o conteúdo de um único arquivo, nós podemos ver parte a parte aquele conteúdo do arquivo, então com isso nós completamos essa parte aqui que cobra tanto o wc quanto o less e vimos também o more. Nós vamos ver agora outras maneiras de pegarmos partes ou conteúdo de um arquivo inteiro.

Como obter informações sobre arquivos - Concatenando arquivos com o cat

[00:00:00] Nós já vimos como ver parte de um arquivo e ir olhando esse arquivo aos poucos, porém tem vezes que eu quero simplesmente olhar todo o arquivo, então vamos ver todo o arquivo? O comando cat serve para ver todo conteúdo de um arquivo, cat post-do-blog.txt, só que aí você vai falar, na prática realmente o cat mostra muita coisa para nós, é demais e nós acabamos não usando isso, porque tem que ficar agora procurando.

[00:00:26] É muito pior que o less e o more. No less e no more pelo menos eu tinha a barra, podia na barra mesmo já procurar as coisas que eu queria. Agora tenho que ficar aqui, fazendo “Search > Find”, olha que loucura, demorei até para encontrar o find, por quê? Porque no more e no less nós sabemos que temos o “barra” para fazer a busca, muito mais prático e isso acontece porque o cat não foi feito para ver um arquivo.

[00:00:52] Ele foi feito para concatenar arquivos, o cat é um concatenador de arquivos. Se você olhar aqui, tenho, por exemplo, um arquivo post-do-blog.txt e tenho o programa.c.txt, se eu quiser colocar um arquivo logo depois o outro, vou dar cat post-do-blog.txt programa.c, o que ele faz? Colocou um arquivo e o outro arquivo logo depois dele, então repare que o cat é um concatenador de arquivos.

[00:01:20] Ele até tem diversas opções para mostrar informações, por exemplo, -n para mostrar o número da linha, vamos lá, cat -n post-do-blog.txt programa.c e ele mostra para mim o número das linhas, de 1 foi até 116, por quê? Porque no 110 ele acabou o primeiro arquivo e no 111 ele começou o segundo arquivo, você lembra que o primeiro arquivo tinha 100 linhas, não está lembrado ou 110?

[00:01:46] wc post-do-blog.txt programa.c, post-do-blog tem 110 linhas e programa.c tinha 6 linhas, no total 116 linhas. Então o cat -n. Você repara que o cat, a medida que você concatena os arquivos ou só está lendo um único arquivo, você pode usar algumas opções para que ele faça um trabalho nessa interpretação dessa leitura dos arquivos, mostrar sinais para dizer que aqui é quebra de linha, aqui é quebra de página, aqui tem um caractere especial.

[00:02:17] Falando em caractere especial, nós estamos sempre trabalhando com arquivos de texto, são arquivos que nós seres humanos conseguimos ler, tem representação com caractere que nós conseguimos ler, mas se pegar um arquivo binário? Você se lembra que tem aqui no meu arquivo ls, tinha um arquivo a.out, que era a compilação do meu programa.c, esse arquivo é um arquivo binário e não é texto.

[00:02:38] O arquivo de texto é um programa.c, olha é bonito, um texto solto, que eu digitei, o a.out é um arquivo que usa os bytes que não necessariamente são representados na tabela com bytes com que nós conseguimos interpretar, mas, sim com bytes que nós não conseguimos. Se eu der um cat a.out, boa sorte, olha o erro, cheio de coisa que eu não consigo interpretar.

[00:03:02] Algumas coisas você pode olhar e falar: “Nossa, olha que legal, tem algumas coisas que meio que dá para ter ideia do que ele está fazendo”, por exemplo, aqui você vai ver que ele tá linkando com uma biblioteca chamada libc do sistema, porque so é justo bibliotecas do sistema que estão conectadas. Você vê que ele usou o compilador do GNU então tem algumas informações dentro do arquivo que até dá para ler.

[00:03:23] Porém não é a ideia, a ideia não é essa de um arquivo binário, nós lermos com cat ou alguma coisa do gênero, aliás, se você der um cat em um arquivo do GNU e tentar ler ele, o que pode acontecer é que o seu terminal fique doido porque pode tentar interpretar de uma maneira diferente, não esperada e o terminal pode ficar doido, se o seu shell, se o seu terminal ficar doido, você se deu mal, tem que sair e entrar novamente para poder continuar trabalhando nele.

[00:03:50] Legal, nós vimos cat que ele mostra todo o arquivo e concatena vários arquivos, mas também na prática se eu quero ver só um pouco desse arquivo do post-do-blog.txt, o comum é que eu queira ver só o começo ou só o final, se eu quero ver só a cabeça do meu arquivo, só a cabeça, head post-do-blog.txt do meu arquivo e ele mostra para mim as primeiras linhas.

[00:04:14] Se nós formos no man head, nós vamos ver que ele tem várias opções, por exemplo, o número de bytes que eu quero ver ou o número de linhas que quero ver, por padrão ele vê as 10 primeiras linhas, o padrão é -n ou - - lines=10, ou eu posso falar para ele ficar quieto e não imprimir o nome dos arquivos ou -v para ele imprimir verbose, por que?

[00:04:38] Porque no head -n 5 post-do-blog.txt, mostrou só as 5 primeiras linhas. Quero ver as cinco primeiras linhas de dois arquivos, head -n 5 post-do-blog.txt programa.c, ele mostra para mim os dois e repara que ele colocou aqui uma informação dizendo qual é qual, então aquele -q ele não colocou aquela informação. Então repara que o head é bem útil no dia a dia para nós lermos o começo de um arquivo.

[00:05:08] Quero saber o começo que esse arquivo falava, dá um head para ver e, se eu quiser ver o final, tail em inglês, um outro programa que mostra o final de um arquivo, então aí as últimas linhas do meu arquivo. Vamos no man tail mesma coisa, nós temos várias opções que nós podemos passar, por padrão ele imprime as dez últimas linhas de um arquivo e aí o que ele faz?

[00:05:34] Você pode colocar opção com byte, você pode colocar a opção -f que vamos ver daqui a pouco, você pode colocar outras opções que vão mostrar o número de linhas específico. Então vamos sair daqui, no “Q”. Eu saí do meu colega, limpei a minha tela, vou executar de novo o tail post-do-blog.txt de dez linhas, mas você vai falar: “Guilherme, tem muito mais de dez linhas aí”, não, tem dez linhas.

[00:06:11] A quebra de linha só está aqui no final, cuidado, pois a linha é tão grande que ela não cabe no nosso terminal, então no nosso terminal ele acaba ocupando mais linhas, mas no arquivo isso tudo está em uma linha só. Então esse aqui é considerado uma única linha, cuidado com isso. Então o tail -n 5 post-do-blog.txt eu posso passar somente cinco linhas, posso passar só as últimas cinco linhas.

[00:06:37] E o tail tem uma coisa legal que o head não faz que é, eu quero mostrar tudo a partir da linha trinta, então ele mostra tudo a partir da linha 30, repara que é diferente de as últimas trinta linhas, as últimas trinta linhas só tail -n 30, a partir da linha trinta tail -n +30, quer dizer que a partir da linha trinta.

[00:07:10] Repara que quando vimos o man tail eu comentei que tinha a opção -f, uma opção que é bem importante para nós usarmos no nosso dia a dia, só queria esperar um pouco para nós falarmos sobre ela quando estivermos falando sobre redirecionamento. Quando falarmos de redirecionamento vamos falar de tail -f, então com isso nós vimos o head, o tail e o cat.

[00:07:31] Três problemas que nós usamos bastante para encontrar informações no começo e no final ou em todo um arquivo, um ou diversos, assim como o cat, o head e o tail também suportam vários arquivos para você ver o final ou o começo de vários arquivos.

Sobre o curso Certificação Linux LPI Essentials parte 7: Searching and Extracting Data from Files

O curso Certificação Linux LPI Essentials parte 7: Searching and Extracting Data from Files possui 154 minutos de vídeos, em um total de 29 atividades. Gostou? Conheça nossos outros cursos de Linux em DevOps, ou leia nossos artigos de DevOps.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Linux acessando integralmente esse e outros cursos, comece hoje!

Plus

  • Acesso a TODOS os cursos da plataforma

    Mais de 1200 cursos completamente atualizados, com novos lançamentos todas as semanas, em Programação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

12X
R$85
à vista R$1.020
Matricule-se

Pro

  • Acesso a TODOS os cursos da plataforma

    Mais de 1200 cursos completamente atualizados, com novos lançamentos todas as semanas, em Programação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

12X
R$120
à vista R$1.440
Matricule-se
Conheça os Planos para Empresas

Acesso completo
durante 1 ano

Estude 24h/dia
onde e quando quiser

Novos cursos
todas as semanas