Upload
sergio-silva
View
6.924
Download
0
Embed Size (px)
DESCRIPTION
Uma apresentação introdutória aos comandos do linux
Citation preview
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
O que é o shell (bash)?
imagem do terminal do linux
As camadas do sistema
O prompt de comandos
usuario@maquina:~$
O prompt de comandos
O prompt de comandos
O prompt de comandos
O prompt de comandos
Entrada e saída de comandosPor 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.txtassim teremos dois calendários, já se
Redirecionando o terminalcada sessão do shell tem uma identidade acessível através do comando 'tty' Exercício:1 - abra um terminal e digite 'tty' sem aspas e anote esta identiciação, por exemp '/dev/pts/0'
2 - abra outro terminal e digite: cal > /dev/pts/0
O que aconteceu?A saída do comando 'cal' que deveria ser a saída padrão 'monitor' foi redirecionada para o outro terminal.
Obs: o comando cal sem argumentos retorna o calendário do mês atual
A extrutura de pastas
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óriomkdir ...... criar diretórios> .......... cria arquivos pwd ........ exibe pasta atualls ......... listar conteúdo
Listando o conteúdo da pasta
ls ............... listagem simplesls –l ............ listagem com permissõesls –a ............ lista inclusive ocultosls -1 ............ listagem simples 1 por linhals -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'
O comando cal
Exibe o calendário
cal ........ exibe o calendário do mêscal 2 2007 exibe fevereiro de 2007
veja o manual do 'cal' man cal
O comando cd
mudar de diretório
cd /usr/bin ... local específicocd – ......... último localcd .......... 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.
cd /etc/init.<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 ../testemkdir $(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.
O comando mkdir
mkdir -p docs/{img/{fotos,icons,wallpapers,svg},textos/{artigos,man},tmp} o comando acima cria a extrutura abaixo
Mover ou renomear
mv origem destino
Obs: Se o nome de 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 em que pasta você está 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^c ...... interrompe um comando alt. ... insere argumento ultimo comando
O comando man
Acessa o manual de um comando qualquer
/ ...... Ativa a buscan ...... Repete a busca (next)N ...... Repete a busca em sentido inversogg ..... Vai para a linha 1G ...... Vai para o finalq ...... Sai do comando man
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
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óricohistory | 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
Listando os ultimos 16 comandosO comando
fc -l
Lista os ultimos 16 comandos, para mais detalhes "man fc"
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 :)
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
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
Permissões...
Ao usar o comando ls -l
Obtemos algo como:drwx------ 2 sergio sergio 4096 2009-08-21 01:15 bindrwxr-xr-x 5 sergio sergio 4096 2009-08-24 15:17 Desktopdrwxr-xr-x 11 sergio sergio 4096 2009-08-11 11:49 docsdrwxr-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...
baixe o svg aqui --> http://www.mediafire.com/?4ymnduntlm1
Permissões...
chmod 750 filemkdir -m 755 /shared
man umask Mudando a propriedadechown -R sergio.sergio /home/sergio
/etc/group
/etc/passwd
Arquivos de usuários e grupos
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
Gerenciamento de pacotes
como instalar e remover pacotescomo funciona o aptcomo 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óriosAtualizando 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 rootif [ "$(id -u)" != "0" ]; then echo " Need be root" sleep 2 exit 1fi
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 interfaceiface eth0 inet static .... ip estáticoaddress 10.3.0.12 ......... endereço de redenetmask 255.255.255.0 ..... máscaragateway 10.3.0.1 .......... computador que fornece sinal
sudo nano /etc/resolv.conf .. indica o DNS
search domain.velox ......... dns do veloxnameserver 200.165.132.155 .. primárioNameserver 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 networkmanagerNo 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"
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}'
Dica sobre o pingO 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
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 (digite yes)
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
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
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 pendriveagora pode copiar o arquivo para o pendrive
Duas outras opções interessantes do rsync:--update --delete (veja man rsync)
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 [email protected]:/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
Acessando compartilhamento samba
Compartilhamento via nfs
sudo apt-get install \nfs-common nfs-kernel-server sudo nano /etc/exportsReferências: https://help.ubuntu.com/community/NFSv4Howtohttp://www.vivaolinux.com.br/artigo/NFS-sem-segredos/
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
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
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
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 Obs: para visualizar o conteúdo de um pacote tar jtvf (para tar.bz2), para mais detalhes 'man tar'
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 grepgrep -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 lessgrep -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
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
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 findfind [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 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)
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 wcfind –size +10M | wc -l
backup com findVamos 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ó, apenasestamos 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 buscan .......... repete a buscagg ......... vai para linha 1G .......... vai para o final q .......... sai do less
O comando date
http://linuxdicas.wikispaces.com/date
date +%d .... diadate +%H .... hora
man datedata no padrão americano ano-mes-dia:date -I
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 wgetwget -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
Desligamento programado
O comando shutdown pode ser usado das seguintes formas
sudo shutdown -r +10sudo shutdown -h 0No 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-extensions/
Buscar livros:-inurl:htm -inurl:html intitle:"index of" +("/ebooks""/book") +(chm | pdf | zip) nome livro