1. O que é o shell (bash)?
É através do shell que nos comunicamos com o
núcleo do sistema (kernel)
shell significa concha ou algo que envolve
http://linuxdicas.wikispaces.com/comandos-linux
Esta apresentação também foi postada no blog do Sérgio
neste link:
http://vivaotux.blogspot.com/2009/08/material-para-uma-aula-que-vou.html
2. O que é o shell (bash)?
imagem do terminal do linux
9. Entrada e saída de comandos
Por padrão a entrada de dados no shell é o teclado, é o
que se denomina em inglês de stdin (standard input)
A saída padrão é o monitor stdout (standard output)
Por exemplo podemos redirecionar a saída padrão de
qualquer comando para um arquivo:
cal 2007 > cal2007.txt
Redirecionamento não destrutivo:
Para redirecionar a saida de um comando para um arquivo
sem destruir o que já existe previamente no mesmo, use
o redirecionamento duplo >>
cal 2008 >> cal2007.txt
assim teremos dois calendários, já se
14. O linux é case sensitive
Isto significa que você pode
criar uma pasta Casa outra
CASA e outra casa no mesmo
diretório
15. Comandos internos do shell
São chamados built-in e são mais rápidos
pois já estão na memória
cd ......... mudar de diretório
mkdir ...... criar diretórios
> .......... cria arquivos
pwd ........ exibe pasta atual
ls ......... listar conteúdo
16. Listando o conteúdo da
pasta
ls ............... listagem simples
ls –l ............ listagem com permissões
ls –a ............ lista inclusive ocultos
ls -1 ............ listagem simples 1 por linha
ls -Ssh1 ......... exibição detalhando o tamahno
Como exercício acesse o manual do ls "man ls" e
busque com o uso da barra "/" as opções do último
comando desta lista.
Para sair do man pressione 'q'
17. O comando cal
Exibe o calendário
cal ........ exibe o calendário do mês
cal 2 2007 exibe fevereiro de 2007
veja o manual do 'cal' man cal
18. O comando cd
mudar de diretório
cd /usr/bin ... local específico
cd – ......... último local
cd .......... pasta pessoal (cd sem nada)
19. Table completion
Ao começar a digitar um comando você
pode usar o <tab> para solicitar a
complementação do nome.
cd /etc/init.<tab>
ls ~/De<tab>
24. Deletando uma pasta e seu
conteudo
rm -rf pasta
A letra "r" indica recursividade, ou seja, a
pasta e tudo que estiver nela, para
arquivos não é necessário o "r".
25. O comando echo
Exibe uma mensagem na tela
echo "teste"
echo "agora são $(date +%H:%M) horas"
echo "você está em $(pwd)"
Dica: o bash substitui o conteúdo do $
(pwd) por sua saida que corresponde à
pasta atual
26. Quem sou ?
whoami
se notar-mos este
comando é abreviação
do ingles "who am i?"
echo "olá `whoami`"
28. Atalhos do bash - shell
Considere o circunflexo como Ctrl
^u ...... Apaga até o começo da linha
^y ...... Cola o que foi apagado
^e ...... Vai para o fim da linha
^a ...... Vai para o começo da linha
^p ...... comando anterior
^n ...... próximo comando
^k ...... Apaga até o final da linha
^d ...... Fecha a seção
^c ...... interrompe um comando
alt. ... insere argumento ultimo comando
29. O comando man
Acessa o manual de um comando qualquer
/ ...... Ativa a busca
n ...... Repete a busca (next)
N ...... Repete a busca em sentido inverso
gg ..... Vai para a linha 1
G ...... Vai para o final
q ...... Sai do comando man
30. Histórico de comandos
Seta acima exibe o históico de comandos
O comando history exibe uma lista de todos os
comandos executados para paginar usamos:
history | less
Na verdade o comando less é um paginador e esta
barra vertical é um modo de repassar um comando para
dentro de outro (redirecionamento), seu nome é pipe.
Para sair do less pressione q
31. Sobre o comando tail
Para exibir as últimas 5 linhas de um
arquivo - por padrão o comando tail
exibe as últimas 10 linhas
history | tail –n 5
32. Mas sobre o comando tail
Para acompanhar interativamente a saída
de um log
tail -f /var/log/squid /access.log
| awk '{print $3" "$7}'
Obs: usando a barra invertida podemos
digitar comandos longos em várias
linhas
33. Mais sobre o histórico de
comandos
Cada comando do histórico tem um
número, vamoz exibir os últimos 10
comandos?
history 10
O comando acima é um exemplo de que a
pesquisa nunca para
history | tail
34. Repetindo o comando “n”
do histórico
history | less
Uma vez que você saiba o numero de um comando
que lhe interessa faça
!1234
Este comando repete o comando 1234
35. Repetindo o último
comando do "history"
Há duas formas legais de repetir um comando
no shell
seta acima - enter
!! enter
Para paginar os comandos do histórico sem tirar as mãos
do teclado use Ctrl-n Ctrl-p
36. Repetindo o último comando
Na verdade há outra forma legal de
acessar o histórico de comandos...
se testarmos se o google está
acessível assim:
ping -c 2 www.google.com
Podemos em seguida fazer assim:
!ping
37. Listando os ultimos 16
comandos
O comando
fc -l
Lista os ultimos 16 comandos, para mais
detalhes "man fc"
38. Interrompendo um comando
Ctrl-c
Quando um comando longo está em execução
e você quizer cancela-lo use a combinação de
teclas acima, lembre-se que nos manuais
Ctrl-c equivale a ^c
É uma forma facilitada de anotações :)
39. O usuário root
É o usuário administrador do
sistema, para se tornar root use um
dos seguintes comandos
sudo su –
su
Obs:
• somente o root pode usar o comando adduser (criar usuários)
• No primeiro comando o sistema pede nossa própria senha
• No segundo comando o sistema pede a senha do root diretamente
40. Alterando sua senha
passwd
Digitando o comando passwd sem argumentos o sistema assume que se
deseja mudar a senha para o usuário corrente, mas caso necessite mudar a
senha de outro usuário você terá duas opções
• tornar-se root usando o comando "sudo su -" e
digitar passwd usuario
• fazer login na conta do usuário em questão e digitar
passwd sem nada
41. Permissões...
Ao usar o comando
ls -l
Obtemos algo como:
drwx------ 2 sergio sergio 4096 2009-08-21 01:15 bin
drwxr-xr-x 5 sergio sergio 4096 2009-08-24 15:17 Desktop
drwxr-xr-x 11 sergio sergio 4096 2009-08-11 11:49 docs
drwxr-xr-x 2 sergio sergio 4096 2009-08-24 16:07 dwhelper
-rw-r--r-- 1 sergio sergio 56 2009-08-18 14:27 limpafirefox.sh
-rwxr-xr-x 1 sergio sergio 5028 2009-08-18 14:27 ramprofile.sh
A primeira letra indica se é arquivo "-" ou diretório "d"
rwx indica que pode ler "read" escrever "write" e executar "execute" para o
dono (os três primeiros flags) os outros grupos são flags para grupo e outros.
47. O editor nano
É um editor básico
sudo nano /etc/network/interfaces
O comando acima edita o arquivo
/etc/network/interfaces como root
Para salvar Ctrl-o
Para sair Ctrl-x
48. Gerenciamento de pacotes
como instalar e remover pacotes
como funciona o apt
como procurar pacotes
sudo apt-cache search nome
como editar o /etc/apt/sources.list
sudo nano /etc/apt/sources.list
49. Como editar o sources.list
sudo nano /etc/apt/sources.list
Adicionando repositórios
Atualizando o apt
sudo apt-get update
50. Script para automatizar
instalação
#!/bin/bash
# Criado em:Qua 02/Set/2009 hs 17:18
# Last Change: Qua 02/Set/2009 hs 17:18
# vim:ft=sh:fdm=syntax:nu:
# Instituicao: <+nome+>
# Proposito do script: <+descreva+>
# Autor: <+seuNome+>
# site: <+seuSite+>
# testa se está logado como root
if [ "$(id -u)" != "0" ]; then
echo " Need be root"
sleep 2
exit 1
fi
apt-get install quanta
51. Como configurar a rede
sudo /etc/init.d/networking stop ... stop na rede
sudo /etc/init.d/networking start .. inicia a rede
sudo nano /etc/network/interfaces .. edite o arquivo
auto eth0 ............... qual a interface
iface eth0 inet static .... ip estático
address 10.3.0.12 ......... endereço de rede
netmask 255.255.255.0 ..... máscara
gateway 10.3.0.1 .......... computador que fornece sinal
sudo nano /etc/resolv.conf .. indica o DNS
search domain.velox ......... dns do velox
nameserver 200.165.132.155 .. primário
Nameserver 200.165.132.148... secundário
52. Como configurar a rede
Em alguns casos é necessário também parar o
serviço NetworkManager pois ele reescreve o
arquivo /etc/resolv.conf e você não consegue
navegar se configurar a rede na mão.
sudo find / -iname networkmanager
No linux educacional ele não fica em
/etc/init.d/ por isso é bom saber o nome e
como busca-lo
No linux educacional /usr/bin/NetworkManager
53. Qual o endereço de rede
atual?
ifconfig
ifc<tab>
"Seja esperto o bash
completa com TAB"
54. Qual o gatway da rede?
O gateway é o local por onde sua rede chega, ou
seja, se na configuração de rede não colocar-mos
o mesmo você não navega!
route -n
na segunda coluna da
última linha ou:
route -n | awk '/UG/ {print $2}'
55. Dica sobre o ping
O comando ping é um comando para testar se um
computador (host) está ativo.
O comando ping no linux por padrão fica mandando um
ping indefinidamente isto é útil quando você está
testando cabos de rede, você pinga para uma máquina
local e vai testando os cabos.
Usamos a opção -c do ping apenas para limitar o
número de pings
ping -c 2 www.google.com
56. Dica sobre o ping (2)
O comando nmap (por padrão não instalado) é
capaz de dar um ping numa faixa inteira de ip's
sudo apt-get install nmap
nmap -sP 192.168.0.1-254 | awk '/^Host/ {print $2 " ativo"}'
O comando acima testa uma faixa inteira de ips retornando o ip e a
palavra "ativo" para cada host que responder ao ping. Caso queira gerar
um relatório redirecione a saida para um arquivo>> relatorio.txt
57. Copia simples via rede
scp ./pastalocal usuario@ip:/caminho/para/pasta
scp usuario@ip:/home/usuario/imagens ./
Ele vai pedir a senha do usuário e colocará a pasta “imagens” inteira
no diretório corrente --> ./
Obs: na primeira vez que este comando for executado ele vai perguntar
sobre a criação da chave (digite yes)
58. Gerenciando serviços
Como parar e iniciar a interfaçe de rede
sudo /etc/init.d/networking stop ... stop na rede
sudo /etc/init.d/networking start .. inicia a rede
Serviço de impressão
sudo /etc/init.d/cups stop ... stop cups
sudo /etc/init.d/cups start .. inicia cups
59. Gerenciando serviços II
Serviço de impressão
Pelo navegador acesse: http://localhost:631/
para configurar o servidor de impressão
Obs: defina uma senha para o root com o comando
sudo passwd (o cups necessita deste passo)
sudo /etc/init.d/cups stop ... stop cups
sudo /etc/init.d/cups start .. inicia cups
60. Administração remota via
ssh
Nas máquinas que irão ser
administradas remotamente faça:
sudo apt-get install ssh
Para acessar --> ssh usuario@ip
o servidor irá perguntar sobre a
criação de uma chave de acesso "Yes"
em seguida pedirá a senha do usuário
indicado acima
61. backup com rsync
rsync origem destino
Se você precisar do pendrive para transportar um
arquivo muito grande e o espaço estiver pouco
você pode fazer isto
rsync –avz /media/<tab> ~/backup-pendrive
rm -rf /media/<tab> indique o pendrive
agora pode copiar o arquivo para o pendrive
Duas outras opções interessantes do rsync:
--update --delete (veja man rsync)
62. backup com rsyncrsync origem usuario@destino:/home/usuario/backup
Backup via rede: A extrutura usuario@ip:/dir pode
estar na origem ou no destino, assim se eu desejar
trazer para a máquina atual faço:
[ -d ~/img ] || mkdir ~/img && cd ~/img
O comando acima diz "se a pasta existir [ -d ~/img ] ou tiver
que cria-la || mkdir ~/img e entre na mesma && cd ~/img.
rsync –avz sergio@10.3.0.154:/home/sergio/img/wallpapers ./
Obs: o rsync vai perguntar sobre a criação de uma
chave de acesso digite yes em seguida a senha do
usuário
veja também: https://help.ubuntu.com/community/RsyncCdImage
65. O que é o UDEV volid
Identificação de discos à partir de
indentificadores únicos permitindo o
encaixe de hds em locais distintos sem
perder a referência.
vol_id --uuid /dev/sda5
Referência: http://jfmitre.com/2006/11/descobrindo-o-cdigo-uuid-de-uma-partio.html
66. Qual o espaço ocupado?
du –sh ./
./ ..... pasta atual
67. Qual o espaço livre?
df –h /media/disk
Pendrives cds e hds são montados
em /media
69. Liberando o cd ou pendrive
para desmontar
Quando você tenta remover um
pendrive e o sistema diz que o mesmo
está ocupado faça:
fuser -mkv /media/<tab>
Referências: http://linuxdicas.wikispaces.com/fuser
70. Acessando linux e windows
via live-cd
Usar a mini distro goblinx para
acessar dados locais e enviar
peloa rede usando rsync
71. Recuperando a senha de root
• Iniciar com um livecd
• montar a partição / do hd
• mount /dev/sda? /mnt/lin
• chroot /mnt/lin
• passwd (nova senha)
72. Compactando com tar.bz2
tar cjvf nome.tar.bz2 ./pasta
-c .......... Create
-j .......... Gera tar.bz2
-v .......... Gera saida visual
-f .......... Nome a ser usado
./pasta ...... Será compactada
Obs: para visualizar o conteúdo de um
pacote tar jtvf (para tar.bz2), para mais
detalhes 'man tar'
74. O comando grep
Usado para filtrar conteúdo
ps aux | grep firefox
“ps aux” exibe todos os processos em execução, já o
grep filtra somente os processos que contiverem a
palavra firefox
75. Mais sobre o comando grep
grep “^admin” /etc/passwd
Se filtrassemos apenas a palavra "admin" o grep
filtraria esta palavra em qualquer posição, contudo
usamos expressões regulares para buscar no
começo da linha.
Para aprender sobre expressões regulares acesse:
http://guia-er.sourceforge.net/
76. Mais sobre o comando grep
grep -v “^#” /etc/apt/apt.conf
Usando a opção –v do grep estamos
dizendo: mostre as linhas que não contém
“#” no começo, ou seja, linhas comentadas.
A mesma saida do comando anterior
poderia ser paginada com o less
grep -v “^#” /etc/apt/apt.conf | less
77. Mais sobre o comando grep
vim $(grep –irl “sergio” ~/)
O comando $(grep –irl “sergio” ~/) retornará
uma lista de arquivos que contenham a palavra “sergio” e
entregará para o editor vim.
Um livro sobre o vim pode ser baixado aqui:
http://vivaotux.blogspot.com/2009/01/nosso-livro-sobre-o-vim.html
78. Matando um programa
com o comando pkill
Cada processo (daí a letra ‘p’ no nome) tem uma identidade
chamada pid (process id). O pkill é um comando que mistura
o kill com o grep (busca por padrões) na prática podemos
forçar o fechamento de um programa de forma trivial.
pkill firefox
79. Modo arcaico para matar
programas
listar todos os processos, filtrar o
processo desejado com o grep e em
seguida dar um kill -9
ps aux | grep firefox
digamso que o numero do processo do firefox
seja 1342
kill -9 1342
80. O comando find
find [local] opções
find ~/ -iname “*.txt”
Contando a quantidade
find ~/ -iname “*.txt” | wc -l
Obs: se o local da busca for omitido
o find considera a pasta atual como
lugar da busca
81. Mais sobre o comando find
find –size +10M | less
No próximo comando vamos usar o continuador de
linha “”
find ~/ -iregex "(.*.doc|.*.odt)"
O comando acima usa expressões regulares para buscar
arquivos do word ou openoffice (ignorando maiúsculas ou
minúsculas)
82. Gerando relatórios com o
comando find
find –size +10M | less
Ao invés de paginar na tela usamos um
redirecionamento
find –size +10M > ~/Desktop/bigfiles.txt
Para adicionar algo ao final use >>
Ou fazer uma contagem com o wc
find –size +10M | wc -l
83. backup com find
Vamos criar um backup de arquivos odt criados
nos últimos 10 minutos
mkdir ~/backup
find . -name '*.odt' -cmin -10 -print0 | xargs
-0 cp -ft ~/backup
find . -iname "*.odt" -cmin -120 |
xargs cp -t ~/backup
Obs: digitar os comandos é melhor pois ao copiar
e colar os caracteres podem não ser os mesmos.
84. Sobre comandos longos
Quando digitamos uma barra invertida em um
comando estamos protegendo o Enter, isto significa
que o shell não reconhecerá o enter como tal, veja:
tail -f /var/log/squid /access.log
| awk '{print $3" "$7}'
É como se a linha fosse uma só, apenas
estamos jogando a saida do tail para o comando awk,
veja mais sobre ele aqui. Obs: o comando acima depende
da existência do squid.
85. Mais sobre o comando less
Ele é muito útil para ler a saida de comandos muito longos
O comando find por exemplo tem um man
muito extenso
man find | less
/ .......... o less também tem busca
n .......... repete a busca
gg ......... vai para linha 1
G .......... vai para o final
q .......... sai do less
87. Dica do comando mkdir
Caso necessite criar uma pasta e entrar na
mesma pode fazer
[ -d pasta ] || mkdir pasta && cd pasta
O comando acima diz "se a pasta existir [ -d pasta ] ou
tiver que cria-la || mkdir pasta e entre na mesma && cd
pasta.
Na prática isto fará com que você termine na pasta de qualquer
modo, tanto faz, se houver ou não o sistema entra na mesma, se
não houver ele cria e entra na mesma.
88. Usando o comando cat para
ler conteúdo
cat arquivo.txt
Exibe na tela o conteúdo do arquivo.
Quando o conteúdo tiver que ser
pipeado use-o ao invés do less.
89. Baixando arquivos com o
wget
wget -c http://www.rau-tu.unicamp.br/nou-
rau/softwarelivre/document/?down=143
wget –c –i urls.txt
-c .......... continuar dowload
-i .......... Lista de links a baixar
--limit-rate taxa de download
wget –c –-limit-rate=15k –i links.txt
90. Desligamento programado
O comando shutdown pode ser usado
das seguintes formas
sudo shutdown -r +10
sudo shutdown -h 0
No primeiro caso reinicia
em 10 minutos (restart) no
segundo caso desliga agora
(halt)
92. Referências
É impressindível dominar técnicas de busca no google para solucionar problemas
cotidianos:
http://sergioaraujo.pbworks.com/Como-usar-melhor-o-google
http://www.hackmyidea.com/wordpress/2007/12/09/google-sre-question-on-mass-
changing-file-extensions/
Buscar livros:
-inurl:htm -inurl:html intitle:"index of" +("/ebooks""/book") +(chm | pdf | zip)
nome livro