SlideShare una empresa de Scribd logo
1 de 92
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 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
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
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ó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.  Para sair do  man  pressione 'q'
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
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. 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 ../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.
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 &quot;r&quot; indica recursividade, ou seja, a pasta e tudo que estiver nela, para arquivos não é necessário o &quot;r&quot;.
O comando echo Exibe uma mensagem na tela  echo &quot;teste&quot; echo &quot;agora são $(date +%H:%M) horas&quot; echo &quot;você está em $(pwd)&quot;   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 &quot;who am i?&quot; echo &quot;olá `whoami`&quot;
Onde estou? pwd  O comando pwd exibe em que pasta você está   echo &quot;você está em $(pwd)&quot;
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 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
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&quot; &quot;$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 &quot; history &quot; 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 comandos O comando  fc -l  Lista os ultimos 16 comandos, para mais detalhes &quot;man fc&quot;
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 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Alterando sua senha ,[object Object],[object Object],[object Object],[object Object],[object Object]
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 &quot;-&quot; ou diretório &quot;d&quot; rwx indica que pode ler &quot;read&quot; escrever &quot;write&quot; e executar &quot;execute&quot; 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 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
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 [ &quot;$(id -u)&quot; != &quot;0&quot; ]; then     echo &quot;  Need be root&quot;     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 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 
Qual o endereço de rede atual? ifconfig  ifc<tab>   &quot;Seja esperto o bash completa com TAB&quot;
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 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  
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 &quot; ativo&quot;}'    O comando acima testa uma faixa inteira de ips retornando o ip e a palavra &quot;ativo&quot; 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 &quot;Yes&quot; 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 (veja man rsync)
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: [ -d ~/img ] || mkdir ~/img && cd ~/img    O comando acima diz &quot;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  
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 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 ,[object Object],[object Object],[object Object],[object Object],[object Object]
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 &quot;admin&quot; 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 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 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 vamos usar o continuador de linha “   find ~/ -iregex &quot;.*doc.*odt&quot;   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 wc find –size +10M | wc -l
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 &quot;*.odt&quot; -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&quot; &quot;$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 data 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 &quot;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
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-extensions/   Buscar livros: -inurl:htm -inurl:html intitle:&quot;index of&quot; +(&quot;/ebooks&quot;&quot;/book&quot;) +(chm | pdf | zip) nome livro

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Guia com mais de 500 comandos do linux explicados computeiro da depressão
Guia com mais de 500 comandos do linux explicados   computeiro da depressãoGuia com mais de 500 comandos do linux explicados   computeiro da depressão
Guia com mais de 500 comandos do linux explicados computeiro da depressão
 
Shell Script - Controle de fluxo
Shell Script - Controle de fluxoShell Script - Controle de fluxo
Shell Script - Controle de fluxo
 
Introdução ao Linux - aula 03 e 04
Introdução ao Linux - aula 03 e 04Introdução ao Linux - aula 03 e 04
Introdução ao Linux - aula 03 e 04
 
Tutorial Shell Script
Tutorial Shell ScriptTutorial Shell Script
Tutorial Shell Script
 
Linux shell
Linux shellLinux shell
Linux shell
 
44087090 tutorial-programacao-batch
44087090 tutorial-programacao-batch44087090 tutorial-programacao-batch
44087090 tutorial-programacao-batch
 
Curso Gratuito de Shell Script
Curso Gratuito de Shell ScriptCurso Gratuito de Shell Script
Curso Gratuito de Shell Script
 
12 aula - shell script-2015
12   aula - shell script-201512   aula - shell script-2015
12 aula - shell script-2015
 
Programação em bat
Programação em batProgramação em bat
Programação em bat
 
Manual comandos
Manual comandosManual comandos
Manual comandos
 
Shell script
Shell scriptShell script
Shell script
 
Shell Scipt - Comandos
Shell Scipt - ComandosShell Scipt - Comandos
Shell Scipt - Comandos
 
Introdução à Shellscript
Introdução à ShellscriptIntrodução à Shellscript
Introdução à Shellscript
 
Cap1 exercicios comandos linux
Cap1 exercicios comandos linuxCap1 exercicios comandos linux
Cap1 exercicios comandos linux
 
Shell script
Shell scriptShell script
Shell script
 
Aprendendo linux
Aprendendo linuxAprendendo linux
Aprendendo linux
 
Comandos CMD
Comandos CMDComandos CMD
Comandos CMD
 
Codigos cmd
Codigos cmdCodigos cmd
Codigos cmd
 
Soa cap2 exercicios resolvidos shell
Soa cap2 exercicios resolvidos shellSoa cap2 exercicios resolvidos shell
Soa cap2 exercicios resolvidos shell
 
Ubuntued blog
Ubuntued blogUbuntued blog
Ubuntued blog
 

Destacado (8)

web2.0.ppt
web2.0.pptweb2.0.ppt
web2.0.ppt
 
Charges
ChargesCharges
Charges
 
Web2
Web2Web2
Web2
 
Web2
Web2Web2
Web2
 
Arrogancia
ArroganciaArrogancia
Arrogancia
 
4 secrets-to-a-great-memory
4 secrets-to-a-great-memory4 secrets-to-a-great-memory
4 secrets-to-a-great-memory
 
Web2.0
Web2.0Web2.0
Web2.0
 
Natal Livre
Natal LivreNatal Livre
Natal Livre
 

Similar a O Que é shell - bash

Similar a O Que é shell - bash (20)

Comandos do Linux
Comandos do LinuxComandos do Linux
Comandos do Linux
 
Linux comandos diversos
Linux   comandos diversosLinux   comandos diversos
Linux comandos diversos
 
Comandos Linux
Comandos LinuxComandos Linux
Comandos Linux
 
Comandos linux
Comandos linuxComandos linux
Comandos linux
 
Comandos básicos linux
Comandos básicos linuxComandos básicos linux
Comandos básicos linux
 
Guia 500 comandos_linux
Guia 500 comandos_linuxGuia 500 comandos_linux
Guia 500 comandos_linux
 
Cmd
CmdCmd
Cmd
 
Comandos Linux
Comandos LinuxComandos Linux
Comandos Linux
 
Introdução ao Linux
Introdução ao LinuxIntrodução ao Linux
Introdução ao Linux
 
Comandos linux
Comandos linuxComandos linux
Comandos linux
 
Apostila comandos unix
Apostila   comandos unixApostila   comandos unix
Apostila comandos unix
 
Comandos Unix
Comandos UnixComandos Unix
Comandos Unix
 
Shell script do zero aula 1 - basico do basico e primeiros comandos
Shell script do zero    aula 1 - basico do basico e primeiros comandosShell script do zero    aula 1 - basico do basico e primeiros comandos
Shell script do zero aula 1 - basico do basico e primeiros comandos
 
Alguns Comandos para Linux Mint
Alguns Comandos para Linux MintAlguns Comandos para Linux Mint
Alguns Comandos para Linux Mint
 
Comandos Linux Parte 2
Comandos Linux Parte 2Comandos Linux Parte 2
Comandos Linux Parte 2
 
Palestra cbq
Palestra cbqPalestra cbq
Palestra cbq
 
Aula 11 semana
Aula 11 semanaAula 11 semana
Aula 11 semana
 
Sapo sessions linux power tools
Sapo sessions linux power toolsSapo sessions linux power tools
Sapo sessions linux power tools
 
01 notações iniciais
01   notações iniciais01   notações iniciais
01 notações iniciais
 
Manual UFCD 0839.pptx
Manual UFCD 0839.pptxManual UFCD 0839.pptx
Manual UFCD 0839.pptx
 

O Que é shell - bash

  • 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
  • 3. As camadas do sistema
  • 4. O prompt de comandos usuario@maquina:~$
  • 5. O prompt de comandos
  • 6. O prompt de comandos
  • 7. O prompt de comandos
  • 8. O prompt de comandos
  • 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. 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. A extrutura de pastas
  • 12. Pasta pessoal fica em /home/usuario ~/ ..... atalho para /home/usuario
  • 13. ./ ../ ./ ...... pasta atual ../ ...... pasta acima
  • 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 &quot; man ls &quot; e busque com o uso da barra &quot; / &quot; 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>
  • 20. Limpando a tela ^l O comando Ctrl-l limpa a tela, equivale ao comando “clear”
  • 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. O comando mkdir mkdir -p docs/{img/{fotos,icons,wallpapers,svg},textos/{artigos,man},tmp}   o comando acima cria a extrutura abaixo  
  • 23. Mover ou renomear   mv origem destino    Obs: Se o nome de destino não existir ele renomeia
  • 24. Deletando uma pasta e seu conteudo       rm -rf pasta A letra &quot;r&quot; indica recursividade, ou seja, a pasta e tudo que estiver nela, para arquivos não é necessário o &quot;r&quot;.
  • 25. O comando echo Exibe uma mensagem na tela echo &quot;teste&quot; echo &quot;agora são $(date +%H:%M) horas&quot; echo &quot;você está em $(pwd)&quot;   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 &quot;who am i?&quot; echo &quot;olá `whoami`&quot;
  • 27. Onde estou? pwd O comando pwd exibe em que pasta você está   echo &quot;você está em $(pwd)&quot;
  • 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&quot; &quot;$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 &quot; history &quot; 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 &quot;man fc&quot;
  • 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.
  • 40.
  • 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 &quot;-&quot; ou diretório &quot;d&quot; rwx indica que pode ler &quot;read&quot; escrever &quot;write&quot; e executar &quot;execute&quot; para o dono (os três primeiros flags) os outros grupos são flags para grupo e outros.
  • 43. Permissões... baixe o svg aqui --> http://www.mediafire.com/?4ymnduntlm1
  • 44. Permissões... chmod 750 file mkdir -m 755 /shared man umask   Mudando a propriedade chown -R sergio.sergio /home/sergio
  • 45. Arquivos de usuários e grupos /etc/group /etc/passwd
  • 46. Ejetando o cd eject   eject -t
  • 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 [ &quot;$(id -u)&quot; != &quot;0&quot; ]; then     echo &quot;  Need be root&quot;     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>   &quot;Seja esperto o bash completa com TAB&quot;
  • 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 &quot; ativo&quot;}'    O comando acima testa uma faixa inteira de ips retornando o ip e a palavra &quot;ativo&quot; 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 &quot;Yes&quot; 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 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: [ -d ~/img ] || mkdir ~/img && cd ~/img    O comando acima diz &quot;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  
  • 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. 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
  • 68. Qual a memória livre?   free -m 
  • 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.
  • 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. Descompactando com tar.bz2 tar jxvf arquivo.tar.bz2 Podemos indicar o destino assim: tar jxvf file.tar.bz2 –C destino
  • 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 &quot;admin&quot; 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 &quot;.*doc.*odt&quot;   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 &quot;*.odt&quot; -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&quot; &quot;$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
  • 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. 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 &quot;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)
  • 91. Desligamento programado Uma outra forma de agendar o desligamento   sudo echo 'shutdown -h 0'| at 3:40
  • 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:&quot;index of&quot; +(&quot;/ebooks&quot;&quot;/book&quot;) +(chm | pdf | zip) nome livro