Você está na página 1de 78

O que é o shell (bash)?

É através do shell que nos comunicamos com


o núcleo do sistema (kernel)
http://linuxdicas.wikispaces.com/comandos-linux
O que é o shell (bash)?

imagem do terminal do linux


As camadas do sistema
O prompt de comandos
Pasta pessoal

fica em /home/usuario

~/ ..... atalho para /home/usuario


./ ../

./ ...... pasta atual


../ ...... pasta acima
O linux é case sensitive

Isto significa que você pode


criar uma pasta Casa outra
CASA e outra casa no mesmo
diretório
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
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.
O comando cd

mudar de diretório
cd /usr/bin ... local específico
cd –  ......... último local
cd   .......... pasta pessoal (cd sem nada)
Table completion

Ao começar a digitar um comando


você pode usar o <tab> para solicitar
a complementação do nome.
ls /etc/init.d/<tab><tab>

ls ~/De<tab>
Limpando a tela

^l

O comando Ctrl-l limpa a tela,


equivale ao comando “clear”
O comando mkdir

mkdir pasta
mkdir ../teste
mkdir $(date +%d-%m-%Y)
mkdir -p docs/{img/{fotos,icons,wallpapers,svg},textos/
{artigos,man},tmp}
 
O comando acima mostra todo o poder da linha de comandos, não poderia-
mos criar uma extrutura de pastas como esta usando o mouse de forma tão
rápida e precisa.
Renomear arquivos e
pastas
  mv origem destino  

Se o destino não existir ele


renomeia
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".
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
Quem sou ?

whoami
 
se notar-mos este
comando é abreviação
do ingles "who am i?"
echo "olá `whoami`"
Onde estou?

pwd

O comando pwd exibe o


conteúdo da pasta atual
 
echo "você está em $(pwd)"
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
O comando man

Acessa o manual de um comando qualquer


/ ...... Ativa a busca
n ...... Repete a busca
N ...... Repete a busca em sentido inverso
gg ..... Vai para a linha 1
G ...... Vai para o final
q ...... Sai do comando less
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, seu nome é 
pipe. Para sair do less pressione q 
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 
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
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 
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
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
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
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)
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.
Permissões...
Permissões...

chmod 750 file


mkdir -m 755 /shared

man umask
 
Mudando a propriedade
chown -R sergio.sergio /home/sergio
Arquivos de usuários e
grupos

/etc/group

/etc/passwd
Ejetando o cd

eject
 
eject -t
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
O editor vim
É um editor complexo e poderoso

sudo vim /etc/network/interfaces


 
Ao entrar no editor você estará em modo normal

i.......... insert antes do caractere atual


a ......... insert após o caractere atual

:wq ....... salva e sai


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


Como editar o
sources.list

    sudo nano /etc/apt/sources.list


 
Adicionando repositórios
Atualizando o apt
 
    sudo apt-get update
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


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
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 networmanager
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 
Qual o endereço de
rede atual?
ifconfig

ifc<tab>
 
"Seja esperto o bash
completa com TAB"
Dica sobre o ping
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
 
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

 
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
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/networking stop ... stop cups
 
sudo /etc/init.d/networking start .. inicia cups
 
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/networking stop ... stop cups
 
sudo /etc/init.d/networking start .. inicia cups
 
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
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
backup com rsync

rsync 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:

mkdir ~/img ; cd ~/img ; echo "entrando na pasta`pwd`"

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
Acessando
compartilhamento
samba
Compartilhamento via
nfs
sudo apt-get install \
nfs-common nfs-kernel-server
 
sudo nano /etc/exports
Referências: 
https://help.ubuntu.com/community/NFSv4Howto
http://www.vivaolinux.com.br/artigo/NFS-sem-segredos/
O que é o UDEV volid

Identificação de discos à partir de


identificadores únicos permitindo o encaixe
de hds em locais distintos sem perder a
referência.
Qual o espaço ocupado?

du –sh ./

./ ..... pasta atual


Qual o espaço livre?

df –h /media/disk

Pendrives cds e hds são


montados em /media
Qual a memória livre?

 free -m 
Acessando linux e
windows via live-cd

Usar a mini distro goblinx para


acessar dados locais e enviar
peloa rede usando rsync
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)
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
Descompactando com
tar.bz2

tar jxvf arquivo.tar.bz2

Podemos indicar o destino


assim:

tar jxvf file.tar.bz2 –C \


destino
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
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/
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
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
Matando um programa
com o comando pkill,
xkill, kill
Cada processo (daí a letra ‘p’ no
nome) tem uma identidade
chamada pid (process id).

pkill firefox
http://linuxdicas.wikispaces.com/kill
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
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
Mais sobre o comando
find

find –size +10M | less


 
No próximo comando vamoz usar o continuador de
linha “\”
 

find –iname “*.odt” –cmin -10 –o \


-iname “*.doc” –cmin -10
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 >>


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.
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.
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
O comando date

http://linuxdicas.wikispaces.com/date

date +%d  .... dia


date +%H  .... hora

man date
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.
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.
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

http://linuxdicas.wikispaces.com/md5sum
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)
Desligamento
programado
Uma outra forma de agendar o
desligamento

 sudo echo 'shutdown -h 0'| at 3:40


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-ext
 

Buscar livros:
-inurl:htm -inurl:html intitle:"index of" +("/ebooks""/book") +(chm | pdf | zip)
nome livro

Você também pode gostar