O Que é Shell (bash)

7,038 views
6,870 views

Published on

Uma apresentação introdutória aos comandos do linux

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
7,038
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
182
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

O Que é Shell (bash)

  1. 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. 2. O que é o shell (bash)? imagem do terminal do linux
  3. 3. As camadas do sistema
  4. 4. O prompt de comandos usuario@maquina:~$
  5. 5. O prompt de comandos
  6. 6. O prompt de comandos
  7. 7. O prompt de comandos
  8. 8. O prompt de comandos
  9. 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 
  10. 10. Redirecionando o terminal cada 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
  11. 11. A extrutura de pastas
  12. 12. Pasta pessoal fica em /home/usuario ~/ ..... atalho para /home/usuario
  13. 13. ./ ../ ./ ...... pasta atual ../ ...... pasta acima
  14. 14. O linux é case sensitive Isto significa que você pode  criar uma pasta Casa outra  CASA e outra casa no mesmo  diretório
  15. 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. 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. 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. 18. O comando cd mudar de diretório cd /usr/bin ... local específico cd –  ......... último local cd   .......... pasta pessoal (cd sem nada)
  19. 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>
  20. 20. Limpando a tela ^l  O comando Ctrl-l limpa a tela, equivale ao comando “clear”
  21. 21. 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.
  22. 22. O comando mkdir mkdir -p docs/{img/{fotos,icons,wallpapers,svg},textos/{artigos,man},tmp}   o comando acima cria a extrutura abaixo   
  23. 23. Mover ou renomear   mv origem destino    Obs: Se o nome de destino não existir ele renomeia
  24. 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. 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. 26. Quem sou ? whoami se notar-mos este comando é abreviação do ingles "who am i?" echo "olá `whoami`"
  27. 27. Onde estou? pwd O comando pwd exibe em que pasta você está echo "você está em $(pwd)"
  28. 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. 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. 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. 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. 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. 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. 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. 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. 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. 37. Listando os ultimos 16 comandos O comando fc -l Lista os ultimos 16 comandos, para mais detalhes "man fc"
  38. 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. 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. 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. 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.
  42. 42. Permissões...
  43. 43. Permissões... baixe o svg aqui --> http://www.mediafire.com/?4ymnduntlm1
  44. 44. Permissões... chmod 750 file mkdir -m 755 /shared man umask Mudando a propriedade chown -R sergio.sergio /home/sergio
  45. 45. /etc/group /etc/passwd Arquivos de usuários e grupos
  46. 46. Ejetando o cd eject eject -t
  47. 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. 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. 49. Como editar o sources.list sudo nano /etc/apt/sources.list Adicionando repositórios Atualizando o apt sudo apt-get update
  50. 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. 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. 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. 53. Qual o endereço de rede atual? ifconfig ifc<tab> "Seja esperto o bash completa com TAB"
  54. 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. 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. 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. 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. 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. 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. 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. 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. 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
  63. 63. Acessando compartilhamento samba
  64. 64. 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/
  65. 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. 66. Qual o espaço ocupado? du –sh ./ ./ ..... pasta atual
  67. 67. Qual o espaço livre? df –h /media/disk Pendrives cds e hds são montados em /media
  68. 68. Qual a memória livre? free -m
  69. 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. 70. Acessando linux e windows via live-cd Usar a mini distro goblinx para acessar dados locais e enviar peloa rede usando rsync
  71. 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. 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'
  73. 73. Descompactando com tar.bz2 tar jxvf arquivo.tar.bz2 Podemos indicar o destino assim: tar jxvf file.tar.bz2 –C destino
  74. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
  86. 86. O comando date http://linuxdicas.wikispaces.com/date date +%d .... dia date +%H .... hora man date data no padrão americano ano-mes-dia: date -I
  87. 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. 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. 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. 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)
  91. 91. Desligamento programado Uma outra forma de agendar o desligamento sudo echo 'shutdown -h 0'| at 3:40
  92. 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

×