Comandos do Shell que podem ajudar no dia-dia

Comandos do Shell que podem ajudar no dia-dia do Usuário Desktop Ubuntu: locate, find, grep, sort, nl.
Por Rodolfo Silveira

Iai galera to aqui mais uma vez fazendo um pequeno tutorial e dessa vez vamos falar um pouco sobre comandos no shell.

Todo mundo que é novo ou tem pouca experiência fica meio apreensivo com os comandos via linha de texto e o objetivo aqui hoje hoje é ensinar coisas que podem ser úteis para usuários de desktop, ou seja nada de comandos complicados e nem listas de comandos enormes, por sinal tem na Internet varias listas com comandos básicos, que são; cd, ls, pwd, –help, mkdir, mv, cp.
Eu NÃO irei ensinar eles neste tutorial, quem sabe no próximo, mas eles serão necessários para ajudar no que vou falar hoje.

Quando forem digitar os comandos prestem atenção onde há e onde não há espaço, pois o espaço é um caractere especial para o shell.

Algumas coisas que vocês precisam saber para usar os comandos da melhor forma:

– Para repetir comando no terminal aperte tecla para cima que vai mostrando os comandos antigos, isso evita redigitar algo, ou se quiser apenas mudar algum detalhe no comando efetuado previamente

– Quando eu escrever seuusuario substitua por seu usuário de login

– tecla TAB, a tecla tab completa os comandos e ajuda na navegação, se você digitar loca e de um tab ele vai completar o comando ou vai dar uma lista de possiveis comandos, no meu casp ele deu as seguintes opções local locale localedef locale-gen locate, o tab também serve para navegar nas pastas, ou seja se você digitat ls /home/ e der tab ele vai dar as opções de pasta que tem dentro do home. Isto ajuda a dar velocidade na digitação e evitar erros de digitação nos comandos.

– todos os comandos que vou mostrar aparecem na tela, para eles sairem direto num arquivo bas ta botar no final >nomedoarquivo.txt isso vai criar um arquivo .txt na pasta QUE VOCÊ ESTÁ para criar em outro lugar bote o caminho completo, desta forma: >/home/seuusuario/nomedoarquivo.txt

– Para facilitar quando você não souber o nome completo de algum arquivo, ou não souber se minúscula ou maiúscula, iremos usar caracteres especiais, vou ensinar os que eu mais uso, mas há vários:

? Representa um caractere uma única vez. Exemplos Teste.??? – Todos os arquivos com nome teste que tenham uma extênsão de três caracteres( sejam eles quais forem, diferentes de zero).
* Representa qualquer caractere, qualquer número de vezes. Exemplo: *.txt – todos os arquivos com extensão .txt a*teste.* – Todos os arquivos começando com a que terminem com teste com qualquer extensão ls exemplo* – o comando ls listará todos os arquivos do diretório atual que inicie com o nome exemplo finalizando com qualquer coisa

Obs: Como foi dito o espaço é um caractere especial então para dizer ao linux que o espaço deve ser considerado como espaço temos que usar a contra-barra \ antes, isso se aplica quando não queremos que algum simbolo não seja reconhecido como caractere especial. Exemplo: você tem um arquivo: musica legal.mp3, no shell fica musica\ legal.mp3

Agora vamos aos comandos. Abram um terminal:

1 – Comando locate

Este comando procura por arquivos que coincidam com padrão informado, utilizando uma base de dados do sistema gerada pelo comando updatedb
Para atualizar a base de dados digite:

sudo updatedb

agora podemos usar o comando, basta digitar locate + o que está procurando, exemplo:

locate passwd

Vai apresentar todos os arquivos e pastas com nome passwd com seu devido caminho, mas note que a saida do comando acima saiu muitas linhas, passamos muitas entradas sem ver, para ajudar vamos usar o comando | less, note que o | serve para cocatenar os comandos, ou seja a saida do locate será a entrada do less e o less é um comando onde podemos rolar as tela usando as teclas para cima e para baixo e depois de apertamos a letra q, dai ficará assim:

locate passwd| less

Vamos usar um caractere especial, para fazer uma lista de todos os arquivos com extênsão .sh num arquivo .txt localizado no home do seu usuário;

locate *.sh> /home/seuusuario/locteste.txt

Pronto aprendemos a localizar arquivos, mas dai vem o problema o locate tem uma base de dados pequena que não localiza tudo, a vantagem dele é que ele é muito rápido.

2 – Comando find

Comando find, procura por arquivos em um diretório recursivamente com determinadas caracteristicas. Este é bem flexivel e com bastante opções, irei abordar opções corriqueiras, quem quiser ver tudo sobre ele digite “man find” para ver o manual dele, tem 1.572 páginas linhas.

Para o find temos que levar em consideração que quanto mais afunilarmos a pesquisa mais rapido ele trará o resultado, então se sabemos que o que procuramos está no home não iremos mandar procurar no computador inteiro, a não ser que que você não tenha a mínima ideia onde pode estar o arquivo.

Caso esteja demorando muito a pesquisa ou queiram desistir, no terminal tecle ctrl +c.

A sintaxe é assim: find [opções] [caminho] o_que_esta_procurando

Algumas opções:

-name = Especifica em NOME de arquivo ou padrão a ser procurado, suporta caracteres curinga que devem estar entre aspas simples

-iname = igual ao -name, porém ignora a diferença de maiúscula e minúscula

-type = especifica um tipo de arquivo, podendo ser f para arquivo, d diretório e l para link simbólico.

-exec comando {} \; = Executa comando para cada arquivo achado pelo find.

Ex:  Como procurar arquivos .conf na pasta etc
find /etc -name *.conf

Agora pense que eu tenho uma pasta cheia de mp3 com pastas musicas soltas etc, e eu não lembro onde está a musica e nem lembro como táa escrito, eu sei que é o yves larock e é uma versão tocada com violino e tem no nome a palavra violin(violino em inglês).
como eu sei que tá em algum lugar dentro da pasta pessoal eu vou lá;

cd /media/56841963841946C1/Rodolfo (a pasta está dentro do meu segundo hd, estando nela vou pesquisar usando a opção -iname pois não sei se está maiuscula ou minuscula;

find . -iname *yves*larock*violin*.mp3

O comando achou a música, nesta pasta, no MEU caso:
./Mp3 IPOD/Eletronic/Yves Larock – rise up (violinists vandalism mix).mp3

Legal achou a música, vamo até lá da play, nãooooo, vamos usar a opção exec para achar e já lançar o reprodutor de filmes do ubuntu, que neste caso o comando é totem.

find . -iname *yves*larock*violin*.mp3 -exec totem {} \;

Pronto, ele achou e abriu a música no programa, mas notem que se vocês fizerem uma pesquisa e acharem mais de uma música ele vai abrir 1 música, depois que você fechar ele abre a 2ª música e assim por diante, o que é um saco, então vamos abrir todas as musicas de vez no reprodutor de filmes como ocorre quando selecionamos varias músicas juntas. Primeiro farei uma pesquisa que traz mais de um resultado:

find . -iname *yves*larock*.mp3

Trouxe o seguinte:
./Mp3 IPOD/DIversas H/ELECTRO/Yves_larock-say_yeah.mp3
./Mp3 IPOD/Eletronic/Yves Larock – rise up (violinists vandalism mix).mp3
./Mp3 IPOD/CD Bruna/Yves Larock Feat Jaba – Rise Up (My dream is to fly over the rainbow so high)(1).mp3

Eu quero que abra estas três musicas de vez;

find . -iname *yves*larock*.mp3 -exec totem {} +
Notem que eu mudeio final da
expressão em vez de usar \; usei + desta forma em vez de fazer a ação 1 vez para cada item faz 1 vez com todos os itens.

Outro exemplo legal é o programa de abrir imagens, no Ubuntu todo mundo clica na foto e ela abre com o “Visualizador de fotos do gnome”, esse programa na verdade é o oag

find . -iname *folder*.jpg -exec eog {} +
neste caso fiz uma pesquisa de imagens .jpg, que tenham em algum lugar do nome a palavra folder em minusculo ou maiusculo, e botei para abrir elas para mim.

3 – Comando grep

Este aplica um filtro na entrada padrão exibindo apenas o que combine com o padrão. As opções mais comuns são:

-i = Ignora maiuscula de minuscula
-v = lista apenas o que NÃO coincide com o que se procura

Ex:
procurar a linha do usuário root no passwd
grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash

Mas o grep é legal mesmo concatenando com outros comandos tipo o find:

Eu costumo criar pastas com o nome do estilo de música, vou procurar minhas musicas, filtrando a palavra metal para vim musicas que estão dentro pastas, com heavy metal, new metal, black metal, além de pegar musicas que tem metal no nome:

find /media/56841963841946C1/Rodolfo/ -iname *.mp3| grep metal

Vieram várias musicas e se quiser podemos botar em ordem alfabética usando o comando sort e numera-las com comando nl,  ficando assim:

find /media/56841963841946C1/Rodolfo/ -iname *.mp3| grep metal| sort| nl

A saída ficou em ordem alfabética, nesse caso das pastas, e a lista ficou numerada, com 141 músicas, vou postar aqui uma parte do resultado para não prolongar muito mais o tutorial:

1    /media/56841963841946C1/Rodolfo/Mp3/metal escrit/Angra/angra – carolina iv.mp3
2    /media/56841963841946C1/Rodolfo/Mp3/metal escrit/Angra/Angra – Carry On.mp3
3    /media/56841963841946C1/Rodolfo/Mp3/metal escrit/Angra/Angra – evil warning.mp3
4    /media/56841963841946C1/Rodolfo/Mp3/metal escrit/Angra/Angra – Nothing To Say.mp3
5    /media/56841963841946C1/Rodolfo/Mp3/metal escrit/Angra/Angra – Pain Killer.mp3
6    /media/56841963841946C1/Rodolfo/Mp3/metal escrit/Angra/Atualizar – Angra X Massacration.mp3
7    /media/56841963841946C1/Rodolfo/Mp3/metal escrit/Angra/Hunters and Prey/Angra – Bleeding Heart.mp3
8    /media/56841963841946C1/Rodolfo/Mp3/metal escrit/Angra/Hunters and Prey/Angra – Caca E Cacador [Hunters and Prey Portuguese Version].mp3
9    /media/56841963841946C1/Rodolfo/Mp3/metal escrit/Angra/Hunters and Prey/Angra – Eyes of Christ.mp3
10    /media/56841963841946C1/Rodolfo/Mp3/metal escrit/Angra/Hunters and Prey/Angra – Heroes of Sand [Acoustic Version].mp3

Vejam que o grep é ótimo para buscar em grandes listas, e juntando com nl e sort você pode organizar isso e usar >arquivo.txt para salvar suas buscas em arquivos .txt.

Eu uso muito o find para abrir videos que tenho no pc para não ficar navegando em pasta, pois o nautilus é igual o que tinhamos no windows, vamos clicando e procurando algo inclusive quando sabemos onde está o que queremos não formas rapidas de chegar lá, pelo modo texto você com uma linha de comando você navega até onde quiser e se usar o TAB não se digita quase nada.

Quem tiver dúvida do tutorial logo abaixo tem meus contatos e qem quiser explorar mais os comandos, digita no terminal: man nome_do_comando que vai ter toda documentação.

Por: Rodolfo_tec
Twitter: @rodolfo_tec