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
1 – Comando locate
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:
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
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
find . -iname *yves*larock*violin*.mp3 -exec totem {} \;
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