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
Muito bacana o tutorial, pra eu que estou aprendendo shell agora é bom, mas só uns detalhes:
No inicio foi dito que seria um tuto pequeno! Em minha opnião um tutorial pequeno são aqueles q vc ve em 5 minutos no máximo, mas não significa que o seu esta ruim, q esta bom!
Depois fio dito que o manual do find tem 1.572 páginas e na verdade são 1.572 linhas.
Não quero ser chato com pequenos detalhes, só estou dando um feedback para ver se tenta evitar pequenos erros, tbm de português (não dúvido que eu tbm tenha errado aqui nos comments), mas detalhes tbm fazem a diferença!
Não sei se posso, mas gostaria de compartilhar com outros q tbm estão aprendendo os vídeos aqui, http://www.iotecnologia.com.br/curso-de-shell-script , não tenho nenhuma relação com o site, só compartilhando algo mesmo!
E Parabéns!
Excelente tutorial, valeu!
Marcelo, valeu pelas dicas, realmente os erros de português, tem vários sou péssimo em gramática e me apoio no corretor do editor de texto, mas no google docs nem tudo foi apontado para corrigir. E realmente acabou ficando bem longo rsrsrsrs, me empolguei.
No próximo vou tentar ficar mais atento e botar no final “desculpe pelos erros de português” pois mesmo com corretor meus erros de concordância são absurdos.
Sérgio, obrigado pelo elogio!
Um comando que considere uma mão na roda para administradores de sistema é o rsync, vejam alguns exemplos de uso aqui: http://linuxdicas.wikispaces.com/rsync