Lista de comandos do terminal

Esta dica é uma “dicaça“!

Muita gente que visita o blog, “reclama” que abuso de imagens de interface gráfica e que é mais fácil usar o terminal para certas – ou todas – ações que comento. Bem, se é assim, que tal decorar todos os comandos e seus significados?

O site (feio e bem anos 80) chamado Índice A a Z de comandos do Terminal traz uma lista imensa de todos os comandos e para que eles servem.

Então, amigos com problemas de interface, agora é a sua vez! Decorem tudinho beleza?

Abraços a todos e me sigam no Facebook ou Twitter ou Google Plus.

 

CRONTAB – o agendador de tarefas do linux

por Rodolfo Silveira

Olá pessoal, estou aqui de volta fazendo um pequeno tutorial sobre o crontab o agendador de tarefas do Linux, lembrando que o crontab existe em qualquer versão do linux.

Com o crontab é possivel especificar horários como “todos os dias ás 5 da manhã” ou “a cada meia hora”, “de dez em dez minutos”.

Para a maioria das tarefas pouco importa a hora que vai ocorrer mas sim a frequência em que ela vai ser executada, como diariamente ou semanalmente. Para isso já existe 4 diretórios especiais, que basta o administrador botar o script lá dentro, eles já serão executados na periodicidade desejada.

/etc/cron.daily diário
/etc/cron.hourly a cada hora
/etc/cron.monthly mensal
/etc/cron.weekly semanal

Mas caso você mesmo queira fazer um periodo especifico, com hora e tudo mais, basta editar o arquivo:
/etc/crontab

Então vamos lá. Escolha um editor de sua escolha, no meu caso o VIM e abra um terminal e digite:

sudo vim /etc/crontab

Notem no conteúdo:

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

Notem que já existe algumas entradas justamente dos diretórios especiais, para adicionar sua própria tarefa temos que seguir o seguinte padrão de linha:

minuto hora diadomês mês diadasemana usuário comando

Notem que para cada espaço, se avança um campo e os campos seguem o padrão existente que conhecemos, por exemplo no campo mês não pode ter 15 pois temos de 1-12 e o campo da semana usamos de 0 a 7 onde zero e 7 é domingo 1 é segunda-feira, 2 terça-feira e assim por diante.

Temos também alguns caracteres que facilitam a vida:

Caractere Exemplo Siginificado
Hífen 2-4 intervalo de 2 a 4
virgula 2,4,6,8 os números 2,4,6 e 8
barra */10 de dez em dez
asterisco * todas as opções possiveis

Vamos botar a mão na massa:

Imagine que temos uma rotina de backup que comprime o o /home e o /var/log e queremos que esta rotina aconteça diariamente as 23:35;

Se usarmos o tar por exemplo, poderíamos usar duas linhas de comando ou não, por isso recomendo que crie um script e no arquivo do CRON nós vamos apontar para o script.

Criando o script:

vim /scriptbkp.sh

O conteúdo do script, onde comprime a pasta home e a pasta log no hd externo de modo que o nome do arquivo fique com a data do dia da execução e ainda criando um arquivo de log localizado no /scriptbkplog.log para posterior análise:

#!/bin/sh
tar -cvzf /media/hdexterno/bkphome$(date +%Y_%m_%d).tar.gz /home >> /scriptbkplog.log
tar -cvzf /media/hdexterno/bkplog$(date +%Y_%m_%d).tar.gz /var/log >> /scriptbkplog.log

Salve e saia.

Vamos dar permissão de execução também:

sudo chmod 755 /scriptbkp.sh

Agora vamos lá no crontab:

sudo vim /etc/crontab

Adicione a seguinte linha:

35 23 * * * root sh /scriptbkp.sh

Salve e saia. Pronto, todos os dias da semana, todos os meses, todos os dias do mês, na hora 23 e minuto 35 ele vai executar o script e enviar o backup para o hd externo do exemplo.

Mas e se quisermos a atividade de segunda e sabado as 09:27. A linha ficará assim:

27 09 * * 1,6 root sh /scriptbkp.sh

Se quisermos toda hora, de 08 as 18 de segunda a sexta:

00 8-18 * * 1-5 root sh /scriptbkp.sh

Se quisermos fazer mensalmente independente da hora, feche o crontab e mova o arquivo para a pasta especial, com o seguinte comando:

sudo mv /scriptbkp.sh /etc/cron.monthly

FIM! Se tiverem dúvida podem entrar em contato valeu!

Rodolfo Silveira
@rodolfo_tec
e-mail: [email protected]

Tuitando direto do terminal

Tuite via terminal usando o pacote TWIDGE usando estas dicas.

Uma vez instalado o TWIDGE, no setup dele você precisará digitar o número do PIN do API do Twitter, que libera o uso deste aplicativo, na sua conta. Não precisará nem digitar usuário/senha no terminal. Muito fácil.

O twidge é um cliente para sites de microblog como o Twitter e o Identica (identi.ca). Uma lista completa dos recursos do twidge, juntamente com numerosas sugestões de como usá-lo, pode ser encontrada no site do twidge em http://software.complete.org/twidge

Bem, divirta-se no terminal tuitando e enganando seu chefe. :-)

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

Comandos do terminal de A a Z

Preferir usar uma interface gráfica com telinhas bonitas é uma opção mais comum.

Mas existem momentos e necessidades de que precisamos usar o terminal e isso não é problema. Não deveria sê-lo pelo menos.

Para ajudar, existe a página An A-Z Index of the Bash command line for Linux onde você encontra todos os comandos de terminal que pode usar ou pesquisar. Vale a conferida.

E não esqueça de nos seguir no Twitter!

terminal