1) O documento explica o que é o shell no Linux e algumas de suas funções.
2) É apresentado vários comandos do shell como cd, ls, mkdir entre outros.
3) São explicados conceitos como diretórios, permissões, redirecionamento e histórico de comandos.
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
Entrada e saídade 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
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 doshell
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údoda
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
Exibeo 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
mudarde diretório
cd /usr/bin ... local específico
cd – ......... último local
cd .......... pasta pessoal (cd sem nada)
19.
Table completion
Ao começara digitar um comando você
pode usar o <tab> para solicitar a
complementação do nome.
cd /etc/init.<tab>
ls ~/De<tab>
Deletando uma pastae 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
Exibeuma 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
senotar-mos este
comando é abreviação
do ingles "who am i?"
echo "olá `whoami`"
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
Acessao 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
Setaacima 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 comandotail
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 ocomando 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 ohistó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
comandodo "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 últimocomando
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 ultimos16
comandos
O comando
fc -l
Lista os ultimos 16 comandos, para mais
detalhes "man fc"
38.
Interrompendo um comando
Ctrl-c
Quandoum 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
Digitandoo 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 ocomando
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.
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
comoinstalar 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 osources.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 arede
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 arede
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çode rede
atual?
ifconfig
ifc<tab>
"Seja esperto o bash
completa com TAB"
54.
Qual o gatwayda 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 oping
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 oping (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 viarede
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 parare 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çode 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
Nasmá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
rsyncorigem 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 rsyncrsyncorigem 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
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çoocupado?
du –sh ./
./ ..... pasta atual
67.
Qual o espaçolivre?
df –h /media/disk
Pendrives cds e hds são montados
em /media
Liberando o cdou 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 ewindows
via live-cd
Usar a mini distro goblinx para
acessar dados locais e enviar
peloa rede usando rsync
71.
Recuperando a senhade 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
tarcjvf 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'
O comando grep
Usadopara 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 ocomando 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 ocomando 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 ocomando 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
como 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 paramatar
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 ocomando 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 como
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
Vamoscriar 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
Quandodigitamos 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 ocomando 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
Dica do comandomkdir
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 comandocat 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 como
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 comandoshutdown 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)
Referências
É impressindível dominarté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