Shell Tips and Tricks for sysadmin

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Shell Tips and Tricks for sysadmin - Presentation Transcript

    1. Shell Tips and Tricks 19/Maio/2008 Magno Alexandre Torres <magno@corp.globo.com>
    2. Aprenda os atalhos CLI O básico já ajuda muito! Final da linha: CTRL+e Início da linha: CTRL+a Remover palavras a esquerda: CTRL+w Remover palavras a direita: CTRL+u
    3. Só isso?! [tips] Nem tudo é o que parece Ao remover uma palavra(ou conjunto de), na verdade você a salvou num buffer, que poderá ser resgatado com CTRL+y, Ex: # cp arquivo.txt /path/gigante/novo.txt # <UP><CTRL+w><DOWN> # vi <CTRL+y>
    4. [tips] Pesquisar o histórico com <CTRL+r> Para continuar a pesquisar continuar pressionando r sem soltar o <CTRL> CTRL+t: corrigir erros corriqueiros de digitação, como: iv<ctrl+t> => vi
    5. Continuando... Você costuma esquecer sempre que precisava ter usado o sudo e agora vai ter que digitar tudo novamente com o sudo, ou subir o cursor, CTRL+a e digitar o sudo novamente. Da pra ser mais prático?
    6. tricks # cat /etc/shadow cat: /etc/shadow: Permissão negada magno@magno ~ $ sudo !! sudo cat /etc/shadow [conteúdo]
    7. Mais um [trick] CLI de bônus É muito comum precisar usar o último parâmetro usado anteriormente. Segue a bruxaria, ex: # grep ^tecktalk: /etc/passwd # cat [ESC] . => cat /etc/passwd
    8. Quantos números 9 existem noves= entre 1 a 100? $(echo -n $( grep 9 <( for ((i=1;i<100;i++)) do echo $i done ) ) | sed 's/[^9]//g' ) echo ${#noves}
    9. Stream file [trick] Muitos comandos exigem arquivos, como o diff. Seria bom o diff diferir entre outputs de 2 comandos, certo?! Seus problemas acabaram! Chegou o file(stream) tabajara! ;-) # cat <(ls|head -1) 01.jpg # ls -la <(ls|head -1) lr-x------ 1 ... /dev/fd/63 -> pipe:[11525029]
    10. Vim|Diff [trick & tips] # < <(tail -10 nomes.txt) grep maria # diff <(cd a; ls|sort ) <(cd b; ls|sort ) # diff dir1 dir2 => compara diretorios #diff -r dir1 dir2 => recursivamente(-r)
    11. GREP Um dos primeiros comandos que a gente aprende a usar... e sempre esquecemos o poder que o mesmo tem. Forma pouco otimizada para pesquisar por uma linha com “Maria qquer coisa Jose”, dando falsos positivos como “Jose qqer coisa Maria”: # grep Maria nomes.txt | grep Jose
    12. Forma inteligente # grep “Maria.*Jose” nomes.txt Nunca esqueça! GREP trabalha com REGEXP! Shell NÃO!!! No shell * = qualquer caracter, 0 ou mais Em REGEXP é: .* ou .+
    13. [trick] Não sou fã de ficar turbinando, criando alias exóticos que não vai usar em outro linux... Sou da filosofia KISS Mas no caso do grep... tem um tip que sempre gosto de aplicar e alguns linux já aplicam isso como Gentoo ;-) # grep –color # egrep –color Este trick é ótimo para testar uma RE
    14. OR no grep e fgrep O operador Rexp OR pede um grep com esteróides: egrep “Maria|Jose” nomes.txt grep -E Maria|Jose nomes.txt egrep -i 'MaRIa|Jose' nomes.txt fgrep -i “Maria Jose” nomes.txt
    15. Grep [tips] Se alguém aqui parar de usar o wc junto com o grep este tecktalk já terá valido a pena!!! :-) # grep fulano nomes.txt|wc -l # grep -c fulano nomes.txt
    16. Grep [tips] Grep recursivo: # grep -r -l ^root /etc 2>/dev/null /etc/passwd ... Mostra as 4 linhas anteriores(before): grep -B4 Ma nomes.txt posteriores(after): grep -A4 Ma nomes.txt entre: grep -4 Ma nomes.txt
    17. Grep [trick] Sempre é um transtorno ficar testando strings de pesquisa com o grep, por que precisamos mover o cursor pro meio, certo?! Pense novamente! # < nomes.txt grep maria # < nomes.txt grep jose
    18. Monitorando # for i in 1 2 3; do uptime;sleep 1;done # for ((i=0;i<99;i++));do uptime;sleep 1;done # while true; do uptime;sleep 1;done # while [ 1 ]; do uptime;sleep 1;done # while :; do uptime;sleep 1;done
    19. Monitorando [tips] O comando Watch é um dos mais esquecidos. É ideal para monitorar: # watch uptime # watch -n 3 uptime # watch -d -n 3 uptime [trick]
    20. find [tips] Para pesquisar recursivamente não existe nada melhor que o find # find . -name '*.txt' -atime +5 # find . -name '*.txt' -atime -5 # find . -name '*.txt' -atime 5 # find /home/user -mtime -5 -type f| xargs grep -i sexo
    21. find [tricks] Resolvendo o problema dos arquivos com espaço: # find /home/user -mtime -5 -type f -name '*.txt' -print0|xargs -0 grep -i sexo
    22. SED = REGEXP Pra usar o sed, alias, para ser um verdadeiro profissional em TI um mínimo de conhecimento em REGEXP é essencial! O básico já é muito, lembre-se KISS! ^ = inicio da linha . = qualquer caracter $ = final da linha [0-9] = qqer número [^char] = qualquer caracter exceto estes
    23. Continuando... + => Repetição de 1 ou + vezes o caracter anterior . => Repetição de 0 ou + vezes o caracter anterior Ex: # sed 's/^ubuntu://' /etc/passwd # sed 's/^ubuntu:(.*)$/test:1/' /etc/passwd
    24. Sed [tips] SED aceita qualquer tipo de separador, ex: separador 'a' echo 12345678 | sed 'sa123a666a' separador '|' boa escolha echo /tmp/passwd | sed 's|/tmp/|/etc|'
    25. Sed [trick] Ao trabalhar com sed, podemos ficar frustrados por ele não alterar o arquivo, sempre jogar a saída para stdout. ERRADO! Usar opção -i (muito cuidado) Não deixar ninguem fumando perto quando usar este parâmetro! sed -i 's/Maria/& Sapatao/gi' nomes.txt
    26. Shell script [tips] Portabilidade #!/usr/bin/env bash Se o bash estiver definido no path(default para qualquer shell), env o encontrará. “env” deixa o script mais portável
    27. Aspas e apóstrofos # echo “$PWD” # echo '$PWD' # echo $PWD # echo ${PWD} # echo “$PWD”a # echo '$PWD'a # echo $PWDa # echo ${PWD}a
    28. Shell [tips] Alterando variáveis no shell: server=”riold45-10.5.9.8” nome=$(echo $server|cut -d '-' -f 1) ip=$(echo $server|cut -d '-' -f 2) nome=$(echo $server|sed 's/-.*$//') ip=$(echo $server|sed 's/^.*-//')
    29. Shell [tricks] Alterando variáveis no shell de forma otimizada, esta vale a pena gravar! server=”riold45-10.5.9.8” nome=${server/-*/} ip=${server/*-/}
    30. Shell functions [tips] Reutilize codigo, usando functions em shell # soma() { echo $(( $1 + $2 )); } # uma linha # soma 4 2 #6 #Somar Identado, parametros $1 e $2 function somar() { echo $(($1 + $2)) }
    31. Shell arrays [tips] Shell bash suporta arrays, apenas unidimensionais e com índice numéricos: a[0]=1 a[1]=a a[2]=4 echo ${a[0]} ${a[1]} ${a[2]}
    32. std(in|out|err) Stdin (/dev/stdin): entrada padrão # tail /var/log/messages|vi - Stdout (/dev/stdout): saida padrão “1>” # ls >/dev/null (não tem erro, não printa nada) # ls arquivo_asdsd.fff > /dev/null (printa erro) Stderr (/dev/stderr): saida erro “2>” # cmd.exe > /dev/null (printa erro) # cmd.exe 2> /dev/null (não printa erro)
    33. std(in|out|err) [tips] Jogar toda a saída para como se fosse saida padrão, para manipular com grep # cmd 2>&1 (saida de erro se soma a stdout) #Jogar tudo para /dev/null if grep root /etc/passwd > /dev/null 2>&1 then echo root user exist fi
    34. [tricks] Bash 3: mandar tudo para um mesmo output: cmd &>/dev/null == cmd > /dev/null 2>&1 Executar segundo comando se primeiro ok # ls -d /tmp && cd /tmp Executar segundo comando se primeiro falha # ls -d /tmp/a || mkdir /tmp/a && cd /tmp/a Debugando script shell bash -x script.sh
    35. Expansão {} # echo 1{2,3} # mkdir a{1,2,3,4,5,6,7,8,9} == a{1..9} # echo {a..z}{A..Z} != echo {a..z} {A..Z} # ls -d /etc/[a-z][a-z][0-9]* # ls -d /etc/[a-z][a-z][!0-9]* # ls -d /etc/[a-z][a-z][^0-9]* # touch works; mv work{s,}
    36. Vim <inicialização> Dentro do vim :help vimtutor CLI # vimtutor
    37. Referências: Man bash

    + magnotorresmagnotorres, 4 months ago

    custom

    388 views, 0 favs, 0 embeds more stats

    Dicas e truques para acelerar o dia a dia de quem t more

    More info about this document

    CC Attribution-ShareAlike LicenseCC Attribution-ShareAlike License

    Go to text version

    • Total Views 388
      • 388 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 7
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories