$30 off During Our Annual Pro Sale. View Details »

O poder da linha de comando

O poder da linha de comando

Palestra de 1h, direcionada a programadores front-end. O objetivo é demonstrar o mundo de ferramentas poderosas de linha de comando que estão ali, esperando para serem descobertas. Ao mesmo tempo, difundir a filosofia do Unix, da simplicidade e modularidade.

A primeira metade da palestra são slides, a outra metade é uma demonstração ao vivo dos comandos sendo executados. Leia aqui o relato completo, com fotos e histórico da linha de comando: http://aurelio.net/curso/sc-dev-summit/

Apresentada em 2016-05-21 no SC Dev Summit 2016 (Joinville-SC) http://scdevsummit.com.br

Aurelio Jargas

May 21, 2016
Tweet

More Decks by Aurelio Jargas

Other Decks in Programming

Transcript

  1. O poder da
    linha de comando
    Aurelio Jargas
    http://aurelio.net
    @oreio

    View Slide

  2. Dominação mundial, sem pressa
    1970 — AT&T Unix
    1991 — Linux
    2001 — Mac OS X
    2016 — Windows 10

    View Slide

  3. Feito para power users
    Modern computing environments tend to favor
    form over function: the primary objective in
    their design is ease of use for non-experts.
    Unix is a naked celebration of function over form.
    The premium is on control, efficiency and flexibility.
    Its audience is the power user.
    — Survival guide for Unix newbies

    View Slide

  4. A Filosofia do Unix
    “This is the Unix philosophy:
    Write programs that do one thing and do it well.
    Write programs to work together.
    Write programs to handle text streams,
    because that is a universal interface.”
    — Doug McIlroy, inventou o pipe em 1970

    View Slide

  5. KISS
    Keep it simple, stupid

    View Slide

  6. Pra quê?
    Criar estrutura básica de pastas e arquivos do projeto
    Edição em massa em vários arquivos
    Renomear vários arquivos de uma vez
    Extrair dados dos logs do Apache ou Nginx
    Encontrar rapidamente um texto no projeto
    Usar as diversas ferramentas já existentes
    Automatizar tarefas repetitivas e manuais
    Criar suas próprias ferramentas

    View Slide

  7. Bootstrap 2.x → 3.x
    span2
    span3
    span4
    span6
    span8
    span10
    span12
    col-md-2
    col-md-3
    col-md-4
    col-md-6
    col-md-8
    col-md-10
    col-md-12
    sed -ri 's/span([0-9]+)/col-md-\1/g' *.html

    View Slide

  8. Exemplo de ferramenta caseira
    $ alias css='cat ~/css.txt | grep -i'
    $ css italic
    font-style : normal, italic, oblique
    $ css bold
    font-weight : normal, bold, bolder, lighter
    font : bold 12pt Arial
    $
    https://github.com/aureliojargas/css-grep

    View Slide

  9. $ __

    View Slide

  10. A estrutura de um comando

    View Slide

  11. Comando, opções, argumentos
    grep -i -r margin-top assets/
    jade --watch /code/projeto --out /var/www
    node-sass --watch source/sass/* --output assets/css
    stylus -u autoprefixer-stylus -c -w css/style.styl
    uglifyjs -o foo.min.js --mangle --compress foo1.js foo2.js

    View Slide

  12. Comando, opções, argumentos
    grep -i -r margin-top assets/
    jade --watch /code/projeto --out /var/www
    node-sass --watch source/sass/* --output assets/css
    stylus -u autoprefixer-stylus -c -w css/style.styl
    uglifyjs -o foo.min.js --mangle --compress foo1.js foo2.js

    View Slide

  13. Comando, subcomandos, opções, argumentos
    gem install sass
    apt-get install -f curl wget
    bundle install --deployment
    brew install --ignore-dependencies wget
    git diff -w arquivo.css
    git log -n 20 --oneline --reverse
    git stash show -p stash@{0}

    View Slide

  14. Comando, subcomandos, opções, argumentos
    gem install sass
    apt-get install -f curl wget
    bundle install --deployment
    brew install --ignore-dependencies wget
    git diff -w arquivo.css
    git log -n 20 --oneline --reverse
    git stash show -p stash@{0}

    View Slide

  15. Redirecionamento de entrada e saída
    lessc source_file.less > compiled_file.css
    jade --watch < index.jade > index.html
    stylus --compress < source_file.scss > compiled_file.css
    find projeto -name ".css" > lista.txt
    find projeto -name ".js" >> lista.txt

    View Slide

  16. Crie seus próprios comandos
    alias readme='atom -n README.md'
    alias limpa='rm -rf tmp/* cache/*'
    alias gs='git status'
    alias gl='git log -n 20 --oneline --reverse'
    alias reset='git reset --hard HEAD'
    alias u='uglifyjs --mangle --compress'

    View Slide

  17. Combinar comandos
    $ cat /etc/passwd | grep ^root
    root:*:0:0:System Administrator:/var/root:/bin/sh
    $ cat /etc/passwd | grep ^root | cut -d : -f 5
    System Administrator
    $ cat /etc/passwd | grep ^root | cut -d : -f 5 | tr a-z A-Z
    SYSTEM ADMINISTRATOR
    $

    View Slide

  18. É sobre texto
    “The shell is a string processing language.”
    — Steve Bourne, criou o sh original em 1978

    View Slide

  19. Brincando com textos

    View Slide

  20. Lorem ipsum dolor sit amet, id
    nonumes suscipiantur necessitatibus
    mea. Ea rebum omnes usu. No mutat
    ornatus impedit nec, nec cu bonorum
    omnesque. Cetero reprimique no has,
    pri dictas commune vituperata ea,
    sumo omnium probatus per id. Eu
    qui quidam eleifend, albucius
    contentiones has cu. Quo te accusam
    constituam. Vis ex aperiam recteque
    hendrerit. Porro vivendo patrioque
    cu sed. Nominavi iudicabit
    periculis qui no, duo cu tempor
    eirmod, ei sea suas iisque. Ne
    primis similique ius. Duo posse
    ubique mediocritatem ei. Harum
    clita habemus ei ius, est at quando
    possit. Ut nam veritus detracto
    consequat. Qui facilisi adipisci
    tincidunt ut, pro ad error commodo

    View Slide

  21. Extrair linhas e colunas

    View Slide

  22. head -n 4
    sed 1,4d
    Lorem ipsum dolor sit amet, id
    nonumes suscipiantur necessitatibus
    mea. Ea rebum omnes usu. No mutat
    ornatus impedit nec, nec cu bonorum
    omnesque. Cetero reprimique no has,
    pri dictas commune vituperata ea,
    sumo omnium probatus per id. Eu
    qui quidam eleifend, albucius
    contentiones has cu. Quo te accusam
    constituam. Vis ex aperiam recteque
    hendrerit. Porro vivendo patrioque
    cu sed. Nominavi iudicabit
    periculis qui no, duo cu tempor
    eirmod, ei sea suas iisque. Ne
    primis similique ius. Duo posse
    ubique mediocritatem ei. Harum
    clita habemus ei ius, est at quando
    possit. Ut nam veritus detracto
    consequat. Qui facilisi adipisci
    tincidunt ut, pro ad error commodo
    tail -n 4
    grep vivendo
    grep -v vivendo
    sed -n 11p
    sed 11d

    View Slide

  23. Lorem ipsum dolor sit amet, id
    nonumes suscipiantur necessitatibus
    mea. Ea rebum omnes usu. No mutat
    ornatus impedit nec, nec cu bonorum
    omnesque. Cetero reprimique no has,
    pri dictas commune vituperata ea,
    sumo omnium probatus per id. Eu
    qui quidam eleifend, albucius
    contentiones has cu. Quo te accusam
    constituam. Vis ex aperiam recteque
    hendrerit. Porro vivendo patrioque
    cu sed. Nominavi iudicabit
    periculis qui no, duo cu tempor
    eirmod, ei sea suas iisque. Ne
    primis similique ius. Duo posse
    ubique mediocritatem ei. Harum
    clita habemus ei ius, est at quando
    possit. Ut nam veritus detracto
    consequat. Qui facilisi adipisci
    tincidunt ut, pro ad error commodo
    cut -c 11-20
    cut -c 1,2,3,4,5

    View Slide

  24. Modificar o texto

    View Slide

  25. LOREM IPSUM DOLOR SIT AMET, ID
    NONUMES SUSCIPIANTUR NECESSITATIBUS
    MEA. EA REBUM OMNES USU. NO MUTAT
    ORNATUS IMPEDIT NEC, NEC CU BONORUM
    OMNESQUE. CETERO REPRIMIQUE NO HAS,
    PRI DICTAS COMMUNE VITUPERATA EA,
    SUMO OMNIUM PROBATUS PER ID. EU
    QUI QUIDAM ELEIFEND, ALBUCIUS
    CONTENTIONES HAS CU. QUO TE ACCUSAM
    CONSTITUAM. VIS EX APERIAM RECTEQUE
    HENDRERIT. PORRO VIVENDO PATRIOQUE
    CU SED. NOMINAVI IUDICABIT
    PERICULIS QUI NO, DUO CU TEMPOR
    EIRMOD, EI SEA SUAS IISQUE. NE
    PRIMIS SIMILIQUE IUS. DUO POSSE
    UBIQUE MEDIOCRITATEM EI. HARUM
    CLITA HABEMUS EI IUS, EST AT QUANDO
    POSSIT. UT NAM VERITUS DETRACTO
    CONSEQUAT. QUI FACILISI ADIPISCI
    TINCIDUNT UT, PRO AD ERROR COMMODO
    tr a-z A-Z

    View Slide

  26. L0r3m 1psum d0l0r s1t 4m3t, 1d
    n0num3s susc1p14ntur n3c3ss1t4t1bus
    m34. E4 r3bum 0mn3s usu. N0 mut4t
    0rn4tus 1mp3d1t n3c, n3c cu b0n0rum
    0mn3squ3. C3t3r0 r3pr1m1qu3 n0 h4s,
    pr1 d1ct4s c0mmun3 v1tup3r4t4 34,
    sum0 0mn1um pr0b4tus p3r 1d. Eu
    qu1 qu1d4m 3l31f3nd, 4lbuc1us
    c0nt3nt10n3s h4s cu. Qu0 t3 4ccus4m
    c0nst1tu4m. V1s 3x 4p3r14m r3ct3qu3
    h3ndr3r1t. P0rr0 v1v3nd0 p4tr10qu3
    cu s3d. N0m1n4v1 1ud1c4b1t
    p3r1cul1s qu1 n0, du0 cu t3mp0r
    31rm0d, 31 s34 su4s 11squ3. N3
    pr1m1s s1m1l1qu3 1us. Du0 p0ss3
    ub1qu3 m3d10cr1t4t3m 31. H4rum
    cl1t4 h4b3mus 31 1us, 3st 4t qu4nd0
    p0ss1t. Ut n4m v3r1tus d3tr4ct0
    c0ns3qu4t. Qu1 f4c1l1s1 4d1p1sc1
    t1nc1dunt ut, pr0 4d 3rr0r c0mm0d0
    tr aeio 4310

    View Slide

  27. Reordenar linhas e colunas

    View Slide

  28. tincidunt ut, pro ad error commodo
    consequat. Qui facilisi adipisci
    possit. Ut nam veritus detracto
    clita habemus ei ius, est at quando
    ubique mediocritatem ei. Harum
    primis similique ius. Duo posse
    eirmod, ei sea suas iisque. Ne
    periculis qui no, duo cu tempor
    cu sed. Nominavi iudicabit
    hendrerit. Porro vivendo patrioque
    constituam. Vis ex aperiam recteque
    contentiones has cu. Quo te accusam
    qui quidam eleifend, albucius
    sumo omnium probatus per id. Eu
    pri dictas commune vituperata ea,
    omnesque. Cetero reprimique no has,
    ornatus impedit nec, nec cu bonorum
    mea. Ea rebum omnes usu. No mutat
    nonumes suscipiantur necessitatibus
    Lorem ipsum dolor sit amet, id
    tac

    View Slide

  29. di ,tema tis rolod muspi meroL
    subitatissecen rutnaipicsus semunon
    tatum oN .usu senmo muber aE .aem
    muronob uc cen ,cen tidepmi sutanro
    ,sah on euqimirper oreteC .euqsenmo
    ,ae atareputiv enummoc satcid irp
    uE .di rep sutaborp muinmo omus
    suicubla ,dnefiele madiuq iuq
    masucca et ouQ .uc sah senoitnetnoc
    euqetcer mairepa xe siV .mautitsnoc
    euqoirtap odneviv orroP .tirerdneh
    tibacidui ivanimoN .des uc
    ropmet uc oud ,on iuq silucirep
    eN .euqsii saus aes ie ,domrie
    essop ouD .sui euqilimis simirp
    muraH .ie metatircoidem euqibu
    odnauq ta tse ,sui ie sumebah atilc
    otcarted sutirev man tU .tissop
    icsipida isilicaf iuQ .tauqesnoc
    odommoc rorre da orp ,tu tnudicnit
    rev

    View Slide

  30. clita habemus ei ius, est at quando
    consequat. Qui facilisi adipisci
    constituam. Vis ex aperiam recteque
    contentiones has cu. Quo te accusam
    cu sed. Nominavi iudicabit
    eirmod, ei sea suas iisque. Ne
    hendrerit. Porro vivendo patrioque
    Lorem ipsum dolor sit amet, id
    mea. Ea rebum omnes usu. No mutat
    nonumes suscipiantur necessitatibus
    omnesque. Cetero reprimique no has,
    ornatus impedit nec, nec cu bonorum
    periculis qui no, duo cu tempor
    possit. Ut nam veritus detracto
    pri dictas commune vituperata ea,
    primis similique ius. Duo posse
    qui quidam eleifend, albucius
    sumo omnium probatus per id. Eu
    tincidunt ut, pro ad error commodo
    ubique mediocritatem ei. Harum
    sort -f

    View Slide

  31. Extrair campos

    View Slide

  32. 1,alex,M,31/12/1999
    2,ana,F,04/08/1993
    3,cristina,F,30/11/1996
    4,daniel,M,25/01/1991
    5,larissa,F,17/03/1990
    6,paulo,M,21/05/1997
    7,rafael,M,14/02/1991
    8,tatiana,F,19/06/1994
    cut -d , -f 2

    View Slide

  33. Combinar arquivos

    View Slide

  34. cat 1.txt 2.txt
    Lorem ipsum dolor sit
    amet, id nonumes susci
    piant necessitati mea.
    Ea rebum omnes usu. No
    mutat ornatus impedit nec,
    nec cu bonorum
    omnesque. Cetero repri
    no has, pri dictas com
    mune vituperata ea, sumo
    omnium probatus per id. Eu
    qui quidam eleifend,
    albucius contentiones
    has cu. Quo te accusam
    constituam. Vis ex aperi
    Nominavi iudicabit peri
    culis qui no, duo cu
    tempor eirmod, ei sea suas
    iisque. Ne primis
    similique ius. Duo posse
    ubique mediocritatem ei.
    Harum clita habemus ei
    ius, est at quando possi
    Ut nam veritus detracto
    consequat. Qui facilisi
    adipisci tincidunt ut, pro
    ad error commodo ex ius
    putent epicurei, mea in.
    Scripta legendos ius

    View Slide

  35. paste 1.txt 2.txt 3.txt
    Lorem ipsum dolor sit
    amet, id nonumes susci
    piant necessitati mea.
    Ea rebum omnes usu. No
    mutat ornatus impedit nec,
    nec cu bonorum
    omnesque. Cetero repri
    no has, pri dictas com
    mune vituperata ea, sumo
    omnium probatus per id. Eu
    qui quidam eleifend,
    albucius contentiones
    has cu. Quo te accusam
    constituam. Vis ex aperi
    Nominavi iudicabit peri
    culis qui no, duo cu
    tempor eirmod, ei sea suas
    iisque. Ne primis
    similique ius. Duo posse
    ubique mediocritatem ei.
    Harum clita habemus ei
    ius, est at quando possi
    Ut nam veritus detracto
    consequat. Qui facilisi
    adipisci tincidunt ut, pro
    ad error commodo ex ius
    putent epicurei, mea in.
    Scripta legendos ius
    Eu graeci molestiae per,
    mel eu adipisci hendre
    rit. Lorem veniam conven
    ire mei ex, ius noster
    apeirian reprehendunt
    cu. At pro nisl iuvaret,
    qui suas prodesset
    rationibus cu. Ei quo elit
    sensibus. Nec ex blandit
    lucilius vituperata. Duo
    ne prima mazim lobortis,
    natum prodesset sea ea.
    Est in zril offendit, vel
    natum

    View Slide

  36. Demo time!

    View Slide

  37. Hora do sorteio :)

    View Slide

  38. Comandos essenciais para lidar com textos
    cat Mostra arquivo
    cut Extrai campo ou coluna
    echo Mostra texto
    grep Encontra texto
    head Mostra linhas iniciais
    rev Inverte texto
    sed Edita texto
    seq Conta números
    sort Ordena texto
    tac Inverte arquivo
    tail Mostra linhas finais
    tr Transforma texto
    uniq Remove linhas duplicadas
    wc Conta letras, palavras, linhas

    View Slide