Pro Yearly is on sale from $80 to $50! »

シェル芸入門

 シェル芸入門

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

F15009da35b0e5df281c63a80e8891b4?s=128

ishiy1993

May 30, 2017
Tweet

Transcript

  1. γΣϧܳೖ໳ ishiy 2017.05.28

  2. $ whoami • Twitter: @ishiy1993 • Arch Linux • Zsh

    • urxvt • Neovim ͜ͷεϥΠυதͷྫ͸্هͷ؀ڥͰςετ͍ͯ͠·͢ɻ Mac ͷਓ͸ɺ”GNU coreutils”ΛΠϯετʔϧͯ͠࢖༻͍ͯͩ͘͠͞ɻ
  3. ͓͠ͳ͕͖ • γΣϧܳͱ͸ • γΣϧܳͷجຊɺίπ • Α͘࢖͏ίϚϯυ 8 બ •

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

    id=1434 ҰݴͰ͍͏ͱɺγΣϧϫϯϥΠφʔ
  5. γΣϧܳͷجຊ ύΠϓ | ͰίϚϯυΛͭͳ͍Ͱ΍Γ͍ͨ͜ͱΛ࣮ݱ͢Δ ྫ: P ͔Β͸͡·Δϓϩάϥϛϯάݴޠ͸? $ cat programming

    -languages.txt | grep ’^P’ PHP Perl Python PureScript ύΠϓʹΑͬͯ୯ػೳͳίϚϯυΛࣗ༝ʹ૊Έ߹ͤΒΕΔ!!!
  6. γΣϧܳͷίπ ଟ͘ͷίϚϯυ͸ߦʹରͯ͠࡞༻͢Δ ⇒ ͏·͘σʔλΛมܗͯ͠ѻ͏ ྫ: LICENSE ͱ͍͏ϑΝΠϧதʹ࠷සޠ͸Կ͔? ·ͨԿݸ͋Δ͔? $ cat

    LICENSE | tr ’A-Z’ ’a-z’ | xargs -n 1 | tr -d ’,.()’ | sort | uniq -c | sort -k1 ,1nr | head -1
  7. Α͘࢖͏ίϚϯυ8બ ࠓճ঺հ͢Δ΋ͷ • cat • sort • uniq • grep

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

    | cat sample1.txt sample2.txt -
  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
  10. grep ৚݅ʹϚον͢ΔߦΛग़ྗ͢Δ $ grep "^.*$" * Α͘࢖͏Φϓγϣϯ: E, i, v,

    o, A, B, C $ cat LICENSE | grep -o the $ seq 1 100 | grep -C 2 1
  11. xargs ඪ४ೖྗΛίϚϯυͷҾ਺ʹ౉͢ $ ls *.txt | awk ’{print $1 ,$1".bak"}’

    | xargs -n 2 cp γΣϧܳਓత࢖͍ํ $ seq 1 9 | xargs -n 3
  12. tr จࣈΛஔ׵͢Δɺ࡟আ͢Δ $ cat presen.csv | tr ’,’ ’ ’

    Α͘࢖͏Φϓγϣϯ: d, c $ cat /dev/urandom | tr -dc ’1-9’ | fold -w 4 | head -1
  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/’
  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}’
  15. ঺հͰ͖ͳ͔ͬͨίϚϯυͨͪ ࠓճ঺հͨ͠Ҏ֎ʹ΋͞·͟·ͳίϚϯυ͕͋Δɻ ͦͷҰ෦Λྻڍ͓ͯ͘͠ɻ • find • diff • paste •

    curl • wget • jq • nkf • ͳͲͳͲ
  16. ͓͢͢Ίॻ੶ • ্ా ོҰ ʮγΣϧϓϩάϥϛϯά࣮༻ςΫχοΫʯ • Piro(݁৓༸ࢤ) ʮ·Μ͕ͰΘ͔Δ Linux γε؅ܥঁࢠʯ

    • Piro(݁৓༸ࢤ) ʮ·Μ͕ͰΘ͔Δ Linux γε؅ܥঁࢠ 2ʯ ΋ͬͱγΣϧͰ͍Ζ͍Ζ΍Γ͍ͨͱ͍͏ํʹ͸ 1 ࡭໨ CLI Λ࢖͍͸͡Ίͨ͹͔Γͱ͍͏ํʹ͸ 2,3 ࡭໨ Λ͓͢͢Ί͠·͢ɻ ͋ͱ man ΛಡΉͷ΋͓͢͢Ί͠·͢ɻ
  17. γΣϧܳษڧձ • 2ϲ݄ʹ 1 ճ։࠵ (౦ژɺେࡕɺ෱Ԭ) • γΣϧܳͰ໰୊Λղ͘ • YouTube

    ͰϥΠϒ഑৴͍ͯ͠Δ • ౰೔͸ Twitter(#γΣϧܳ) Ͱ੝Γ্͕͍ͬͯΔ • աڈ໰Ұཡ: https://blog.ueda.tech/?page id=684
  18. ·ͱΊ γΣϧܳΛۦ࢖ͯ͠࡞ۀޮ཰Λ޲্͠Α͏!!!

  19. Thank you.