シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」
-
Upload
hirofumi-saito -
Category
Engineering
-
view
5.551 -
download
4
Transcript of シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」
![Page 1: シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」](https://reader030.fdocument.pub/reader030/viewer/2022013115/55a93bf41a28ab94758b4640/html5/thumbnails/1.jpg)
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWKユーザー会斉藤@hi_saito - 1 -
2014 年 12 月 13, 14 日シェルスクリプトワークショップ
@鳥取環境大学
jus 勉強会
シェルスクリプトワークショップ
初心者向け「シェル芸」
日本 GNU AWKユーザー会
斉藤博文
![Page 2: シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」](https://reader030.fdocument.pub/reader030/viewer/2022013115/55a93bf41a28ab94758b4640/html5/thumbnails/2.jpg)
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWKユーザー会斉藤@hi_saito - 2 -
2014 年 12 月 13, 14 日シェルスクリプトワークショップ
@鳥取環境大学
はじめに
![Page 3: シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」](https://reader030.fdocument.pub/reader030/viewer/2022013115/55a93bf41a28ab94758b4640/html5/thumbnails/3.jpg)
自己紹介
「日本 GNU AWKユーザー会」会長
http://gauc.no-ip.org/awk-users-jp/
@hi_saito
USP Magazine, Codezineに連載中
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWKユーザー会斉藤@hi_saito - 3 -
2014 年 12 月 13, 14 日シェルスクリプトワークショップ
@鳥取環境大学
2 日間、よろしくお願いします
![Page 4: シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」](https://reader030.fdocument.pub/reader030/viewer/2022013115/55a93bf41a28ab94758b4640/html5/thumbnails/4.jpg)
勉強会で重要なこと
質問しよう
積極的に質問をしてください
振り返ろう
手を動かして実際に試そう
大したことないことを分かろう
自分もいつかは講師をしよう
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWKユーザー会斉藤@hi_saito - 4 -
2014 年 12 月 13, 14 日シェルスクリプトワークショップ
@鳥取環境大学
特に難しいことは話しません
![Page 5: シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」](https://reader030.fdocument.pub/reader030/viewer/2022013115/55a93bf41a28ab94758b4640/html5/thumbnails/5.jpg)
他の講義とダブる?
それは基本だからです
それは重要だからです
それは間違えやすいからです
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWKユーザー会斉藤@hi_saito - 5 -
2014 年 12 月 13, 14 日シェルスクリプトワークショップ
@鳥取環境大学
単に整合が取れていない言い訳かもしれません
![Page 6: シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」](https://reader030.fdocument.pub/reader030/viewer/2022013115/55a93bf41a28ab94758b4640/html5/thumbnails/6.jpg)
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWKユーザー会斉藤@hi_saito - 6 -
2014 年 12 月 13, 14 日シェルスクリプトワークショップ
@鳥取環境大学
シェルスクリプト
![Page 7: シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」](https://reader030.fdocument.pub/reader030/viewer/2022013115/55a93bf41a28ab94758b4640/html5/thumbnails/7.jpg)
我が家での活用例
コンテンツ Proxy サーバー
いわゆる広告削除
サーバー異常の iPhone へのプッシュ通知
curl で簡単に通知できます
年賀状、喪中ハガキ印刷
下手な印刷ソフトよりも便利です
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWKユーザー会斉藤@hi_saito - 7 -
2014 年 12 月 13, 14 日シェルスクリプトワークショップ
@鳥取環境大学
シェルでほとんどのことができます
![Page 8: シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」](https://reader030.fdocument.pub/reader030/viewer/2022013115/55a93bf41a28ab94758b4640/html5/thumbnails/8.jpg)
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWKユーザー会斉藤@hi_saito - 8 -
2014 年 12 月 13, 14 日シェルスクリプトワークショップ
@鳥取環境大学
シェル芸
![Page 9: シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」](https://reader030.fdocument.pub/reader030/viewer/2022013115/55a93bf41a28ab94758b4640/html5/thumbnails/9.jpg)
シェル芸とは?
シェル芸とは、現代においてもっとも過激と
目される CLI ワンライナー原理主義の一派。
武田久美子を教祖とし、夏になると信者は女
も男も老いも若きも貝がらビキニで海辺を
ホーミタイする危険な思想である。
アンサイクロペディア
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWKユーザー会斉藤@hi_saito - 9 -
2014 年 12 月 13, 14 日シェルスクリプトワークショップ
@鳥取環境大学
ネタが古くて 30 代後半でないと分からない上、違います!
![Page 10: シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」](https://reader030.fdocument.pub/reader030/viewer/2022013115/55a93bf41a28ab94758b4640/html5/thumbnails/10.jpg)
シェル芸とは?
マウスも使わず、ソースコードも残さず、GUI
ツールを立ち上げる間もなく、あらゆる調
査・計算・テキスト処理を CLI 端末へのコマ
ンド入力一撃で終わらすこと。
シェル芸の定義バージョン 1.0
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWKユーザー会斉藤@hi_saito - 10 -
2014 年 12 月 13, 14 日シェルスクリプトワークショップ
@鳥取環境大学
「USP友の会」の上田会長の定義です
![Page 11: シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」](https://reader030.fdocument.pub/reader030/viewer/2022013115/55a93bf41a28ab94758b4640/html5/thumbnails/11.jpg)
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWKユーザー会斉藤@hi_saito - 11 -
2014 年 12 月 13, 14 日シェルスクリプトワークショップ
@鳥取環境大学
今回のテーマ
![Page 12: シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」](https://reader030.fdocument.pub/reader030/viewer/2022013115/55a93bf41a28ab94758b4640/html5/thumbnails/12.jpg)
基礎を学ぶ
基礎を学びます
いかにパイプで処理を行うか
ちょっと変わったコマンドの使い方
grep, xargsなど
Map Reduce のようなもの
集計の基礎を行います
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWKユーザー会斉藤@hi_saito - 12 -
2014 年 12 月 13, 14 日シェルスクリプトワークショップ
@鳥取環境大学
今までのシェル芸勉強会よりも簡単です
![Page 13: シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」](https://reader030.fdocument.pub/reader030/viewer/2022013115/55a93bf41a28ab94758b4640/html5/thumbnails/13.jpg)
重要なこと
できなくても構いません
得意、不得意があります
答えが違っても構いません
TIMTOWTDIの精神でやりましょう
手を動かしてください
頭ではなく手を動かしてください
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWKユーザー会斉藤@hi_saito - 13 -
2014 年 12 月 13, 14 日シェルスクリプトワークショップ
@鳥取環境大学
頭もフル活用してください
![Page 14: シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」](https://reader030.fdocument.pub/reader030/viewer/2022013115/55a93bf41a28ab94758b4640/html5/thumbnails/14.jpg)
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWKユーザー会斉藤@hi_saito - 14 -
2014 年 12 月 13, 14 日シェルスクリプトワークショップ
@鳥取環境大学
問題 (5 問あります)
![Page 15: シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」](https://reader030.fdocument.pub/reader030/viewer/2022013115/55a93bf41a28ab94758b4640/html5/thumbnails/15.jpg)
問題 1
1 から 100 までを足してください
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWKユーザー会斉藤@hi_saito - 15 -
2014 年 12 月 13, 14 日シェルスクリプトワークショップ
@鳥取環境大学
![Page 16: シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」](https://reader030.fdocument.pub/reader030/viewer/2022013115/55a93bf41a28ab94758b4640/html5/thumbnails/16.jpg)
解答例 1
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWKユーザー会斉藤@hi_saito - 16 -
2014 年 12 月 13, 14 日シェルスクリプトワークショップ
@鳥取環境大学
$ seq 1 100 | xargs | tr ' ' '+' | bc
$ seq 1 100 | xargs | sed 's:[ ]:+:g' | bc
$ seq 1 100 | awk '{v+=$0}END{print v}'
List: 解答例 1
xargs コマンドの使い方を知ろう
sed の区切りは "/" ではなく、":" が便利
Demo
![Page 17: シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」](https://reader030.fdocument.pub/reader030/viewer/2022013115/55a93bf41a28ab94758b4640/html5/thumbnails/17.jpg)
問題 2
「とうきょうとっきょきょかきょくきょか
きょくちょう」の「きょ」の文字を数えてく
ださい
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWKユーザー会斉藤@hi_saito - 17 -
2014 年 12 月 13, 14 日シェルスクリプトワークショップ
@鳥取環境大学
![Page 18: シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」](https://reader030.fdocument.pub/reader030/viewer/2022013115/55a93bf41a28ab94758b4640/html5/thumbnails/18.jpg)
解答例 2
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWKユーザー会斉藤@hi_saito - 18 -
2014 年 12 月 13, 14 日シェルスクリプトワークショップ
@鳥取環境大学
$ echo 'とうきょうとっきょきょかきょくきょかきょくちょう' |\grep -o 'きょ' |\wc -l
$ echo 'とうきょうとっきょきょかきょくきょかきょくちょう' |\awk '{print gsub(/きょ/, "")}'
List: 解答例 2
grep の -o オプションは便利
Demo
![Page 19: シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」](https://reader030.fdocument.pub/reader030/viewer/2022013115/55a93bf41a28ab94758b4640/html5/thumbnails/19.jpg)
問題 3
「とうきょうとっきょきょかきょくきょか
きょくちょう」の各文字を数えてください
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWKユーザー会斉藤@hi_saito - 19 -
2014 年 12 月 13, 14 日シェルスクリプトワークショップ
@鳥取環境大学
![Page 20: シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」](https://reader030.fdocument.pub/reader030/viewer/2022013115/55a93bf41a28ab94758b4640/html5/thumbnails/20.jpg)
解答例 3
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWKユーザー会斉藤@hi_saito - 20 -
2014 年 12 月 13, 14 日シェルスクリプトワークショップ
@鳥取環境大学
$ echo -n 'とうきょうとっきょきょかきょくきょかきょくちょう' |\sed 's:.:&\n:g' |\sort | uniq -c | sort -nr
$ echo 'とうきょうとっきょきょかきょくきょかきょくちょう' |\sed 's:.:&\n:g' |\awk 'NF' |\sort | uniq -c | sort -nr
List: 解答例 3
"sort | uniq -c | sort -n" は慣用句
空行削除は AWK で
Demo
![Page 21: シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」](https://reader030.fdocument.pub/reader030/viewer/2022013115/55a93bf41a28ab94758b4640/html5/thumbnails/21.jpg)
問題 4
「1 2 3 4 5 6 7 8 9 10」を 2 文字づつフリップ
してください
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWKユーザー会斉藤@hi_saito - 21 -
2014 年 12 月 13, 14 日シェルスクリプトワークショップ
@鳥取環境大学
![Page 22: シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」](https://reader030.fdocument.pub/reader030/viewer/2022013115/55a93bf41a28ab94758b4640/html5/thumbnails/22.jpg)
解答例 4
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWKユーザー会斉藤@hi_saito - 22 -
2014 年 12 月 13, 14 日シェルスクリプトワークショップ
@鳥取環境大学
$ seq 1 10 |\xargs |\xargs -n 2 |\awk '{print $2, $1}' |\xargs
List: 解答例 4
それぞれの xargsの挙動をみてみよう
Demo
![Page 23: シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」](https://reader030.fdocument.pub/reader030/viewer/2022013115/55a93bf41a28ab94758b4640/html5/thumbnails/23.jpg)
問題 5
1 から 100 までを FizzBuzzしてください
3 の倍数の時に Fizz、5 の倍数の時に Buzz
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWKユーザー会斉藤@hi_saito - 23 -
2014 年 12 月 13, 14 日シェルスクリプトワークショップ
@鳥取環境大学
![Page 24: シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」](https://reader030.fdocument.pub/reader030/viewer/2022013115/55a93bf41a28ab94758b4640/html5/thumbnails/24.jpg)
解答例 5
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWKユーザー会斉藤@hi_saito - 24 -
2014 年 12 月 13, 14 日シェルスクリプトワークショップ
@鳥取環境大学
$ seq 1 100 |\awk '{print $0%15?$0%5?$0%3?$0:"Fizz":"Buzz":"FizzBuzz"}'
List: 解答例 5
これはいろいろな方法があると思います
Demo
![Page 25: シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」](https://reader030.fdocument.pub/reader030/viewer/2022013115/55a93bf41a28ab94758b4640/html5/thumbnails/25.jpg)
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWKユーザー会斉藤@hi_saito - 25 -
2014 年 12 月 13, 14 日シェルスクリプトワークショップ
@鳥取環境大学
質問はありますか?
![Page 26: シェルスクリプトワークショップ資料 - 初心者向け「シェル芸」](https://reader030.fdocument.pub/reader030/viewer/2022013115/55a93bf41a28ab94758b4640/html5/thumbnails/26.jpg)
http://gauc.no-ip.org/awk-users-jp/日本 GNU AWKユーザー会斉藤@hi_saito - 26 -
2014 年 12 月 13, 14 日シェルスクリプトワークショップ
@鳥取環境大学
ご清聴ありがとうございました