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. $ whoami • Twitter: @ishiy1993 • Arch Linux • Zsh

    • urxvt • Neovim ͜ͷεϥΠυதͷྫ͸্هͷ؀ڥͰςετ͍ͯ͠·͢ɻ Mac ͷਓ͸ɺ”GNU coreutils”ΛΠϯετʔϧͯ͠࢖༻͍ͯͩ͘͠͞ɻ
  2. γΣϧܳͷجຊ ύΠϓ | ͰίϚϯυΛͭͳ͍Ͱ΍Γ͍ͨ͜ͱΛ࣮ݱ͢Δ ྫ: P ͔Β͸͡·Δϓϩάϥϛϯάݴޠ͸? $ cat programming

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

    LICENSE | tr ’A-Z’ ’a-z’ | xargs -n 1 | tr -d ’,.()’ | sort | uniq -c | sort -k1 ,1nr | head -1
  4. 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
  5. grep ৚݅ʹϚον͢ΔߦΛग़ྗ͢Δ $ grep "^.*$" * Α͘࢖͏Φϓγϣϯ: E, i, v,

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

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

    Α͘࢖͏Φϓγϣϯ: d, c $ cat /dev/urandom | tr -dc ’1-9’ | fold -w 4 | head -1
  8. sed ετϦʔϜΤσΟλʔ ͍Ζ͍ΖͰ͖Δ͕ɺจࣈྻͷஔ׵ʹ࢖͏͜ͱ͕ଟ͍ $ echo " x x ʹ ͭ

    ͍ ͯ ޠ Δ ձ " | sed ’s/xx/CLI/’ $ seq 1 100 | sed ’0~3s/.*/ Fizz/’ | sed ’0~5s/.*/ Buzz/’ | sed ’0~15s/.*/ Fizz Buzz/’
  9. 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}’
  10. ͓͢͢Ίॻ੶ • ্ా ོҰ ʮγΣϧϓϩάϥϛϯά࣮༻ςΫχοΫʯ • Piro(݁৓༸ࢤ) ʮ·Μ͕ͰΘ͔Δ Linux γε؅ܥঁࢠʯ

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

    ͰϥΠϒ഑৴͍ͯ͠Δ • ౰೔͸ Twitter(#γΣϧܳ) Ͱ੝Γ্͕͍ͬͯΔ • աڈ໰Ұཡ: https://blog.ueda.tech/?page id=684