Upgrade to Pro — share decks privately, control downloads, hide ads and more …

シェル芸入門

 シェル芸入門

CAMPHOR- 「CLIについて語る会」における発表資料

ishiy1993

May 30, 2017
Tweet

Other Decks in Programming

Transcript

  1. γΣϧܳೖ໳
    ishiy
    2017.05.28

    View Slide

  2. $ whoami
    • Twitter: @ishiy1993
    • Arch Linux
    • Zsh
    • urxvt
    • Neovim
    ͜ͷεϥΠυதͷྫ͸্هͷ؀ڥͰςετ͍ͯ͠·͢ɻ
    Mac ͷਓ͸ɺ”GNU coreutils”ΛΠϯετʔϧͯ͠࢖༻͍ͯͩ͘͠͞ɻ

    View Slide

  3. ͓͠ͳ͕͖
    • γΣϧܳͱ͸
    • γΣϧܳͷجຊɺίπ
    • Α͘࢖͏ίϚϯυ 8 બ
    • ͓͢͢Ίॻ੶ɺγΣϧܳษڧձ

    View Slide

  4. γΣϧܳͱ͸
    Ϛ΢ε΋࢖Θͣɺιʔείʔυ΋࢒ͣ͞ɺGUI πʔϧΛ্ཱͪ͛
    Δؒ΋ͳ͘ɺ͋ΒΏΔௐࠪɾܭࢉɾςΩετॲཧΛ CLI ୺຤΁ͷ
    ίϚϯυೖྗҰܸऴΘΒ͢͜ͱɻ͋Δ͍͸ͦͷͱ͖ͷίϚϯυೖ
    ྗͷ͜ͱɻ
    from https://blog.ueda.tech/?page id=1434
    ҰݴͰ͍͏ͱɺγΣϧϫϯϥΠφʔ

    View Slide

  5. γΣϧܳͷجຊ
    ύΠϓ | ͰίϚϯυΛͭͳ͍Ͱ΍Γ͍ͨ͜ͱΛ࣮ݱ͢Δ
    ྫ: P ͔Β͸͡·Δϓϩάϥϛϯάݴޠ͸?
    $ cat programming -languages.txt | grep ’^P’
    PHP
    Perl
    Python
    PureScript
    ύΠϓʹΑͬͯ୯ػೳͳίϚϯυΛࣗ༝ʹ૊Έ߹ͤΒΕΔ!!!

    View Slide

  6. γΣϧܳͷίπ
    ଟ͘ͷίϚϯυ͸ߦʹରͯ͠࡞༻͢Δ
    ⇒ ͏·͘σʔλΛมܗͯ͠ѻ͏
    ྫ:
    LICENSE ͱ͍͏ϑΝΠϧதʹ࠷සޠ͸Կ͔? ·ͨԿݸ͋Δ͔?
    $ cat LICENSE | tr ’A-Z’ ’a-z’ |
    xargs -n 1 | tr -d ’,.()’ |
    sort | uniq -c | sort -k1 ,1nr | head -1

    View Slide

  7. Α͘࢖͏ίϚϯυ8બ
    ࠓճ঺հ͢Δ΋ͷ
    • cat
    • sort
    • uniq
    • grep
    • xargs
    • tr
    • sed
    • awk

    View Slide

  8. cat
    ϑΝΠϧͷத਎Λ࿈݁ͯ͠ग़ྗ͢Δ
    $ cat sample1.txt sample2.txt
    -Ͱඪ४ೖྗΛࢦఆͰ͖Δ
    $ date +%F | cat sample1.txt sample2.txt -

    View Slide

  9. sort, uniq
    sort: ೖྗΛιʔτͯ͠ग़ྗ͢Δ
    $ cat programming -languages.txt | sort
    Α͘࢖͏Φϓγϣϯ: k, n, r, s
    uniq: ॏෳΛݟ͚ͭΔɺ࡟আ͢Δ
    $ cat programming -languages.txt |
    sed ’s/\(.\).*/\1/ ’ | sort | uniq -c
    Α͘࢖͏Φϓγϣϯ: u, d, c

    View Slide

  10. grep
    ৚݅ʹϚον͢ΔߦΛग़ྗ͢Δ
    $ grep "^.*$" *
    Α͘࢖͏Φϓγϣϯ: E, i, v, o, A, B, C
    $ cat LICENSE | grep -o the
    $ seq 1 100 | grep -C 2 1

    View Slide

  11. xargs
    ඪ४ೖྗΛίϚϯυͷҾ਺ʹ౉͢
    $ ls *.txt | awk ’{print $1 ,$1".bak"}’ |
    xargs -n 2 cp
    γΣϧܳਓత࢖͍ํ
    $ seq 1 9 | xargs -n 3

    View Slide

  12. tr
    จࣈΛஔ׵͢Δɺ࡟আ͢Δ
    $ cat presen.csv | tr ’,’ ’ ’
    Α͘࢖͏Φϓγϣϯ: d, c
    $ cat /dev/urandom | tr -dc ’1-9’ |
    fold -w 4 | head -1

    View Slide

  13. sed
    ετϦʔϜΤσΟλʔ
    ͍Ζ͍ΖͰ͖Δ͕ɺจࣈྻͷஔ׵ʹ࢖͏͜ͱ͕ଟ͍
    $ echo " x x ʹ ͭ ͍ ͯ ޠ Δ ձ " | sed ’s/xx/CLI/’
    $ seq 1 100 | sed ’0~3s/.*/ Fizz/’ |
    sed ’0~5s/.*/ Buzz/’ |
    sed ’0~15s/.*/ Fizz Buzz/’

    View Slide

  14. awk
    ϓϩάϥϛϯάݴޠ
    جຊతͳ࢖͍ํ
    $ cat presen.csv | tr ’,’ ’ ’ |
    awk ’{print $1" ͸ ʮ" $2" ʯ ʹ ͭ ͍ ͯ ࿩ ͠ · ͢"} ’
    $ seq 1 10 | awk ’NR >=5’
    $ seq 1 10 | awk ’NR %3==0{ print $1*$1}’
    $ seq 1 100 | factor | awk ’NF ==2{ print $2}’

    View Slide

  15. ঺հͰ͖ͳ͔ͬͨίϚϯυͨͪ
    ࠓճ঺հͨ͠Ҏ֎ʹ΋͞·͟·ͳίϚϯυ͕͋Δɻ
    ͦͷҰ෦Λྻڍ͓ͯ͘͠ɻ
    • find
    • diff
    • paste
    • curl
    • wget
    • jq
    • nkf
    • ͳͲͳͲ

    View Slide

  16. ͓͢͢Ίॻ੶
    • ্ా ོҰ ʮγΣϧϓϩάϥϛϯά࣮༻ςΫχοΫʯ
    • Piro(݁৓༸ࢤ) ʮ·Μ͕ͰΘ͔Δ Linux γε؅ܥঁࢠʯ
    • Piro(݁৓༸ࢤ) ʮ·Μ͕ͰΘ͔Δ Linux γε؅ܥঁࢠ 2ʯ
    ΋ͬͱγΣϧͰ͍Ζ͍Ζ΍Γ͍ͨͱ͍͏ํʹ͸ 1 ࡭໨
    CLI Λ࢖͍͸͡Ίͨ͹͔Γͱ͍͏ํʹ͸ 2,3 ࡭໨
    Λ͓͢͢Ί͠·͢ɻ
    ͋ͱ man ΛಡΉͷ΋͓͢͢Ί͠·͢ɻ

    View Slide

  17. γΣϧܳษڧձ
    • 2ϲ݄ʹ 1 ճ։࠵ (౦ژɺେࡕɺ෱Ԭ)
    • γΣϧܳͰ໰୊Λղ͘
    • YouTube ͰϥΠϒ഑৴͍ͯ͠Δ
    • ౰೔͸ Twitter(#γΣϧܳ) Ͱ੝Γ্͕͍ͬͯΔ
    • աڈ໰Ұཡ: https://blog.ueda.tech/?page id=684

    View Slide

  18. ·ͱΊ
    γΣϧܳΛۦ࢖ͯ͠࡞ۀޮ཰Λ޲্͠Α͏!!!

    View Slide

  19. Thank you.

    View Slide