Professional Documents
Culture Documents
Terminal do
Linux
Um Curso Rpido e
Descomplicado para Iniciantes
Elcio Ferreira
elcio@visie.com.br
1
2
O que o prompt e como
funciona
Se voc abrir o terminal em seu Ubuntu agora, deve ver
algo parecido com isso:
3
Depois disso h um sinal de Pasta do Usurio: cada usurio
dois-pontos, seguido da do Ubuntu tem sua prpria
pasta para armazenar seus
informao da pasta atual.
arquivos. aquela pasta que
Nesse caso, "~", que um no gerenciador de arquivos
atalho para a pasta do chamada de "Pasta pessoal".
usurio. Ela geralmente fica dentro da
pasta "/home". Minha pasta de
Em seguida h o caractere usurio est em "/home/elcio" e
de dlar (ou cifro), "~" um atalho muito
conveniente para ela.
terminando esse texto
especial. Logo depois o cursor est piscando, esperando
que voc digite um comando.
cd "rea de Trabalho"
Em seguida pressione
H um jeito simples de digitar
ENTER. Com isso, comandos e caminhos no
trocamos de pasta e terminal, que comear a
estamos agora na rea de digitar o que voc quer e
pressionar TAB para que seu
trabalho. O prompt deve
computador os complete.
4
mudar, desse jeito:
Comando e resposta
Com isso, voc j deve ter percebido o funcionamento
bsico do terminal. Quando o terminal exibe o prompt,
voc deve digitar um comando. Aps digitar o comando,
pressione ENTER e o computador vai executar seu
comando.
5
fazendo.
6
Argumentos de linha de comando
Para a maioria das tarefas que voc pode querer que um
comando execute ser necessrio dizer ao computador
mais do que o nome do comando. Pode ser necessrio
dizer onde e como aquele comando deve ser executado.
cd pasta1
ls -a
7
Navegando entre pastas e
operaes bsicas com
arquivos
Se voc quer de fato usar o terminal, a primeira coisa que
precisa dominar so as operaoes bsicas com arquivos.
Elas podem ser feitas com os comandos a seguir.
cd
Ns j vimos um pouquinho do que o comando cd faz. Ele
navega entre as pastas. Executar o comando cd sem
argumentos navega para a pasta do usurio. O comando
cd pode receber como argumento a pasta para a qual
navegar. Assim:
cd pasta2
cd ..
cd pastapai/pastafilha
8
no caminho da pasta desejada:
cd pastapai/pastafilha/neta/bisneta
cd ~/Documentos/Planilhas
ls
O comando ls lista os arquivos da pasta atual. Voc pode
indicar ao comando que pasta deseja listar, assim:
ls pasta
ls -a
9
Nessa tela temos as permissoes de cada arquivo, uma
coluna mostrando quem o dono do arquivo, outra
mostrando a que grupo esse arquivo pertence. Temos
ento o tamanho de cada arquivo, seguido da data do
arquivo.
A opo -h deve ser usada junto com -l, ela faz com que o
ls exiba o tamanho de cada arquivo em um formato
amigvel para seres humanos. Veja:
10
As opoes do comando ls podem ser combinadas. Assim,
o comando a seguir:
ls -l -h -a
ls -lha
11
mais comum. Se voc quiser ler toda a documentao do
comando ls voc pode usar o comando man, assim:
man ls
pwd
s vezes estamos dentro de uma pasta no terminal e no
sabemos exatamente em que pasta estamos. Para isso
existe o comando pwd, que mostra o caminho completo
da pasta atual. Veja um exemplo do seu funcionamento:
12
cp
O comando cp copia arquivos. Voc pode copiar um
arquivo para a mesma pasta, com um novo nome, assim:
cp arquivo.txt novonome.txt
cp arquivo.txt pasta1
mv
O comando mv move arquivos. Sua sintaxe bem
semelhante do comando cp. Voc pode mover um
arquivo para uma pasta, assim:
mv arquivo.txt pasta1
mv pasta1/arquivo.txt pasta2
13
mv nomeantigo.txt nomenovo.txt
mkdir
O comando mkdir cria pastas. Sua sintaxe bem simples:
mkdir pasta3
mkdir -p pastapai/pastafilha/pastaneta
rm
O comando rm apaga
Cuidado: o terminal confia em
arquivos. Sua sintaxe voc. Quando voc manda ele
tambm bastante mover, copiar ou apagar, ele
simples, assim: executa a operao sem
perguntar nada. Alm disso, o
rm arquivo.txt comando rm apaga
definitivamente os arquivos,
Voc pode apagar pastas no h Lixeira aqui. Por isso,
inteiras, usando a opo todo cuidado pouco ao usar o
-r, desse jeito: comando rm.
rm -r pasta3
14
Entradas e sadas de texto
O terminal uma interface baseada em texto. Vamos
tentar mostrar agora porque isso bom.
a entrada padro
H uma poro de comandos que esperam que o usurio
digite alguma coisa. Por exemplo, abra o terminal e digite
o comando python, sem argumentos. Voc deve obter
uma tela assim:
15
>>>
print 2+2
16
Para encerrar a entrada
Python uma linguagem de
padro, finalizando o programao. O comando
comando python, voc python abre o interpretador
precisa inserir um interativo da linguagem
caractere de final de Python. No se preocupe, voc
no precisa aprender Python
arquivo. Voc faz isso
para dominar o terminal,
pressionando CTRL+D em embora, se o fizer, no vai se
seu teclado. A mesma arrepender.
coisa vale para
praticamente qualquer comando que leia a entrada
padro.
17
Salve com o nome de "soma.txt". Em seguida abra um
terminal, navegue at a pasta onde voc salvou o arquivo
e execute o seguinte comando:
18
A sada padro
Muitos comandos devolvem informao ao usurio. Um
exemplo o comando ls que, como j vimos, exibe na tela
a listagem da pasta atual. Voc se lembra:
19
possvel redirecionar a sada padro de um comando,
usando o caractere ">", assim:
ls -l > listagem.txt
20
Pipes
Alm de fazer com que comandos leiam a entrada padro
a partir de arquivos e fazer com que salvem a sada
padro em arquivos, possvel conectar comandos. Isso
significa que um comando ler a entrada padro a partir
da sada padro de outro comando. Isso feito atravs do
caractere "|", chamado pipe.
21
Assim, voc pode fazer com que a sada do comando echo
seja algo que possa ser lido pelo comando python:
22
A sada de erro
Os comandos em Linux tem uma entrada, a entrada
padro, mas duas sadas. A sada padro, que j vimos,
onde o comando exibe as coisas que voc espera que ele
exiba, e a sada de erro, onde ele exibe erros e avisa de
situaoes inesperadas. Vamos ver um exemplo com o
comando ls. O comando a seguir salva a listagem da pasta
"pasta existente" no arquivo listagem.txt, veja:
23
Essa mensagem de erro no foi exibida na sada padro,
mas numa outra sada, a sada de erro.
24
Isso muito til. Se a mensagem de erro fosse enviada
para a sada padro, voc executaria o comando acima e
acharia que est tudo bem. S descobriria que houve um
erro quando precisasse usar o arquivo listagem.txt e
descobrisse que, ao invs do contedo que voc esperava,
ele contm um erro.
Concatenando
Os caracteres ">" e "2>" redirecionam a sada padro e de
erro para arquivos, reescrevendo totalmente os arquivos.
25
Voc pode querer manter o contedo do arquivo,
escrevendo ao final dele.
26
Comandos para lidar com texto
A interface do terminal baseada em texto. E isso
incrvel. Texto um formato de dados padronizado,
simples de ler e trabalhar, e universal.
cat
O comando cat l a entrada padro e despesa o contedo
na sada padro. Experimente executar o comando cat
sem argumentos, assim:
cat
27
padro, o comando cat pode ser bastante til. Por
exemplo, voc pode redirecionar a sada do comando cat
para um arquivo, assim:
cat texto.txt
28
grep
O comando grep funciona de maneira semelhante ao
comando cat, mas ele espera um argumento. Esse
argumento um padro de busca. Em seguida o grep
comea a ler a entrada padro, mas s vai repetir na sada
padro as linhas que contiverem o padro de busca. Veja
o exemplo:
29
Se voc passar a opo -n o comando grep vai exibir
tambm o nmero da linha encontrada. Veja:
30
Se voc quiser salvar os resultados do comando grep,
como voc j deve ter deduzido, pode redirecionar a sada
do comando grep para um arquivo. Assim:
31
less
Muitas vezes voc quer ver o contedo de um arquivo,
mas ele muito extenso para a sua janela do terminal.
Uma maneira prtica de exibi-lo atravs do comando
less. Execute:
less arquivo.txt
ls -lh | less
tee
Em outras situaoes voc pode querer salvar a sada de
um comando em um arquivo e, ao mesmo tempo,
examin-la na tela ou redirecion-la para outro comando.
Por exemplo, digamos que voc queira salvar uma longa
listagem de pasta num arquivo e, em seguida, examinar
essa listagem. Voc poderia executar dois comandos em
sequncia, assim:
32
possvel fazer isso de uma vez s, usando o comando
tee. O comando tee l a entrada padro e faz duas coisas
com ela. Ao mesmo tempo em que ele a salva num
arquivo, tambm a exibe na sada padro. Assim, se voc
fizer:
33
wc
O comando wc um contador de palavras. Veja:
ls | wc -l
34
sort
O comando sort l a entrada padro e exibe as linhas em
ordem na sada padro. Digamos que voc tenha um
arquivo com a lista de presena de alunos de uma
determinada turma. Voc pode exibir a lista em ordem
alfabtica, assim:
sort chamada.txt
O comando sort pode receber a opo -u, que faz com que
a lista de resultados seja nica, isso , a opo -u remove
as linhas duplicadas. Alm disso, o comando sort pode
receber a opo -n, que faz ordenao numrica e no
alfabtica. Se voc precisa ordenar nmeros, a opo -n
o que voc precisa.
35
Caracteres coringa
Voc deve ter notado, no exemplo acima, o uso do
caractere "*". Ele um caractere coringa. H alguns
caracteres coringa que voc pode usar ao escrever nomes
de arquivos ou pastas. Os dois mais teis so "*" e "?".
rm *
rm a*.txt
rm lista?.txt
36
Donos e Permisses
Uma das coisas mais legais no Linux a maneira como
ele controla as permissoes de arquivos. Cada arquivo ou
pasta no Linux tem um dono, um grupo e um conjunto de
permissoes. Voc pode conferir isso com a sada do
comando ls, veja:
37
que essa linha se trata de uma pasta. Para um caractere
"l" temos um link (uma espcie de atalho). Um caractere
"p" mostra um arquivo especial, do tipo pipe. Um
caractere "c" mostra um dispositivo como, por exemplo,
seu cdrom.
r - leitura
w - escrita
x - execuo
Veja:
38
chown e chgroup
Voc pode mudar o usurio dono ou o grupo a que um
arquivo pertence usando os comandos chown e chgroup.
Para mudar o usurio, faa:
chmod
Para mudar as permissoes de um arquivo, voc pode usar
o comando chmod. Para dar permisso de execuo a um
arquivo, use:
chmod +x texto.txt
39
chmod +rw-x texto.txt
Ou para o grupo:
u - usurio dono
g - grupo
o - os outros usurios
a - todos os alvos (equivalente a "ugo")
40
Trabalhando com listas
Uma das coisas mais legais para se fazer em seguida
aprender a trabalhar com listas de arquivos. Isso torna o
terminal uma ferramenta poderosssima de automao.
find
O comando find serve para encontrar arquivos dentro de
uma estrutura de pastas. Veja um exemplo da sada do
comando find:
41
find "Pasta 1"
find -type f
find -type d
O correto :
find -atime 3
42
find -atime +10
find -atime -5
find -exec
Uma das coisas mais legais que voc pode fazer com o
comando find mand-lo executar um comando para
cada arquivo encontrado. Fazemos isso atravs do
argumento -exec. O argumento -exec deve ser seguido do
comando a ser executado. No lugar onde voc deseja
incluir o nome do arquivo, coloque os caracteres {}, e
termine o comando a ser executado com os caracteres ";".
Assim:
43
o.bak
x.bak
pasta/y.bak
pasta/k.bak
pasta2/pasta3/w.bak
rm o.bak
rm x.bak
rm pasta/y.bak
rm pasta/k.bak
rm pasta2/pasta3/w.bak
xargs
Um outro jeito de fazer com que o comando find execute
um comando para cada um dos resultados encontrados
atravs do comando xargs. O comando xargs l a entrada
padro e transforma em argumentos para um outro
comando. Voc pode us-lo com o find, por exemplo,
assim:
44
Assim, ao invs de executar:
rm o.bak
rm x.bak
rm pasta/y.bak
rm pasta/k.bak
rm pasta2/pasta3/w.bak
for
Vamos agora aprender a trabalhar com o for, que no
um comando, mas uma estrutura de controle. As
estruturas de controle so um recurso poderosssimo do
terminal, e um assunto um pouco mais avanado. Mas
aprender o bsico sobre a estrutura for vai permitir,
imediatamente, que voc faa algumas coisas que
realmente valem a pena.
45
arquivo, seguido da contagem de linhas e palavras desse
mesmo arquivo, voc pode fazer:
46
Automatizando
A grande vantagem de se usar o terminal em relao
interface grfica o fato de voc poder automatizar
tarefas. disso que vamos falar agora.
Criando scripts
Digamos que voc, todos os dias, entre numa pasta,
apague todos os arquivos de backup (com a extenso
.bak.) Em seguida voc salva a data e hora atual no
arquivo resultados.txt. Em seguida, conta quantas linhas
tem o arquivo matriculas.txt e salve o resultado no
arquivo resultados.txt. Com isso, o arquivo resultados.txt
tem um relatrio dos resultados dia a dia.
cd ~/curso
find -name "*.bak" | xargs rm
data >> resultados.txt
wc -l matriculas.txt >> resultados.txt
47
Salve o arquivo como "rotina_diaria". Em seguida, entre
na pasta onde voc salvou o arquivo e d permisso de
execuo nele, assim:
chmod +x rotina_diaria
./rotina_diaria
48
Argumentos para scripts
Agora, digamos que voc precise executar essa sequncia
de comandos acima em pastas diferentes. Em algumas
voc precisa executar essa sequncia todo dia, em outras,
s de vez em quando.
cd $1
find -name "*.bak" | xargs rm
data >> resultados.txt
wc -l matriculas.txt >> resultados.txt
./rotina_diaria ~/curso
./rotina_diaria ~/curso2/matriculas/
49
Bnus: Exemplos
Seguem alguns exemplos de comandos teis que voc
pode usar para automatizar tarefas, alm de pacotes que
voc pode instalar em seu Ubuntu para ter novos
comandos disponveis.
E para usar:
lorem
lorem -p12
50
Para instalar:
E para usar:
cclive http://www.youtube.com/watch?v=8fvTxv46ano
mkdir -p $1
lynx --dump http://www.youtube.com/user/$1/feed | \
grep youtube.com/watch | \
sed -e "s/.* //" | \
sed -e "s/&.*//" | \
sort -u | \
while read url
do
cclive -c --output-dir $1 $url
done
./massclive maninthearenatv
51
Cowsay: a vaquinha falante do Linux
Teste a:
Depois rode:
cowsay Funciona...
date|cowsay
fortune|cowsay
52
Fazendo o comando rm enviar arquivos para
a Lixeira
Talvez voc tenha um pouco de medo de usar o comando
rm, porque ele exclui definitivamente os arquivos. No h
lixeira, e todos os mtodos disponveis para desfazer a
deleo, como o ext2undel, no passam de boas tentativas
com uma razovel chance de insucesso.
trash arquivo_a_apagar.txt
Substituindo o comando rm
53
alias rm=trash
\rm arquivo_a_apagar.txt
54
com uma contrabarra.
55
perl: warning: Falling back to the standard locale
("C").
/var/lib/locales/supported.d/local
pt_BR ISO-8859-1
pt_BR.UTF-8 UTF-8
pt_BR.UTF-8 UTF-8
Em seguida rode:
56
O Linux tambm fala
H um tempo eu ensinei aqui como fazer o Mac falar. O
Linux tambm faz. Instala a:
Da s mandar:
57
tempo, vai consumir o dobro da banda necessria, o
streamming vai ficar pausando a cada dois segundos e o
download vai levar muito tempo. O que fazer? No sei se
h no Windows algum player que faa download e toque
ao mesmo tempo. No linux eu resolvo assim, numa janela
de terminal:
wget -c http://servidor.com.br/video.wmv
Em outra:
tail /var/log/syslog
58
imprimir a partir do fim do arquivo. Voc pode colocar
qualquer nmero que seja maior que o arquivo inteiro. O
parmetro -f faz o tail ficar esperando por contedo novo
no fim do arquivo. Experimente rodar num terminal, por
exemplo:
tail -f /var/log/syslog
59
Fique por dentro:
http://visie.com.br/treinamento/
Aprenda Javascript:
http://js.visie.com.br/
60