SlideShare a Scribd company logo
Submit Search
Upload
Login
Signup
第34回シェル芸勉強会
Report
Ryuichi Ueda
Follow
Associate Professor
Mar. 17, 2018
•
0 likes
•
2,968 views
1
of
36
第34回シェル芸勉強会
Mar. 17, 2018
•
0 likes
•
2,968 views
Download Now
Download to read offline
Report
Technology
シェル芸の活動の意図を珍しく話しました。 2018年3月17日。GMOデジロック株式会社さんにご協力いただき、GMOインターネットグループ 大阪オフィス内のGMO Yours大阪で開催いたしました。
Ryuichi Ueda
Follow
Associate Professor
Recommended
2012年10月27日 Hbstudy#38
Ryuichi Ueda
18.2K views
•
35 slides
Let's verify the vulnerability-脆弱性を検証してみよう!-
zaki4649
7.1K views
•
35 slides
シェル芸初心者によるシェル芸入門
icchy
37.9K views
•
65 slides
SQLアンチパターン - ナイーブツリー
ke-m kamekoopa
29.6K views
•
86 slides
PlaySQLAlchemy: SQLAlchemy入門
泰 増田
21K views
•
91 slides
katagaitai CTF勉強会 #5 Crypto
trmr
6.3K views
•
149 slides
More Related Content
What's hot
暗号技術入門
MITSUNARI Shigeo
12.2K views
•
56 slides
PWNの超入門 大和セキュリティ神戸 2018-03-25
Isaac Mathis
9.5K views
•
102 slides
CTF for ビギナーズ バイナリ講習資料
SECCON Beginners
25.6K views
•
90 slides
SQLアンチパターン メンター用資料
Hironori Miura
14.9K views
•
109 slides
なかったらINSERTしたいし、あるならロック取りたいやん?
ichirin2501
41.5K views
•
19 slides
すごいHaskell 第7章 型や型クラスを自分で作ろう(前編)
Nozomu Kaneko
4.6K views
•
17 slides
What's hot
(20)
暗号技術入門
MITSUNARI Shigeo
•
12.2K views
PWNの超入門 大和セキュリティ神戸 2018-03-25
Isaac Mathis
•
9.5K views
CTF for ビギナーズ バイナリ講習資料
SECCON Beginners
•
25.6K views
SQLアンチパターン メンター用資料
Hironori Miura
•
14.9K views
なかったらINSERTしたいし、あるならロック取りたいやん?
ichirin2501
•
41.5K views
すごいHaskell 第7章 型や型クラスを自分で作ろう(前編)
Nozomu Kaneko
•
4.6K views
文字コードに起因する脆弱性とその対策(増補版)
Hiroshi Tokumaru
•
33.9K views
Javaのログ出力: 道具と考え方
Taku Miyakawa
•
73.7K views
Test Yourself - テストを書くと何がどう変わるか
Takuto Wada
•
38.2K views
MySQL 5.7にやられないためにおぼえておいてほしいこと
yoku0825
•
174.5K views
IDベース暗号の概観と今後の展望(次世代セキュア情報基盤ワークショップ )
Akira Kanaoka
•
8.2K views
ARM LinuxのMMUはわかりにくい
wata2ki
•
6.6K views
MySQLで論理削除と正しく付き合う方法
yoku0825
•
79.1K views
SQLインジェクション総”習”編
Yasuo Ohgaki
•
56.3K views
MongoDBが遅いときの切り分け方法
Tetsutaro Watanabe
•
34.4K views
flaws.cloudに挑戦しよう!
zaki4649
•
9.7K views
AESについて 輪講資料
Sorasuke
•
838 views
とある診断員とSQLインジェクション
zaki4649
•
78.5K views
RSA暗号運用でやってはいけない n のこと #ssmjp
sonickun
•
57.4K views
OWASP Testing Guide からはじめよう - セキュリティ診断技術の共有、そして横展開
Muneaki Nishimura
•
12.1K views
More from Ryuichi Ueda
第27回ロボティクスシンポジアスライド
Ryuichi Ueda
390 views
•
15 slides
シェル・ワンライナー160本ノック
Ryuichi Ueda
2.5K views
•
6 slides
日本ロボット学会第139回ロボット工学セミナー
Ryuichi Ueda
866 views
•
23 slides
シェル芸勉強会と会場の話
Ryuichi Ueda
1.1K views
•
10 slides
移動ロボットのナビゲーション
Ryuichi Ueda
1.3K views
•
36 slides
PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆
Ryuichi Ueda
1.9K views
•
18 slides
More from Ryuichi Ueda
(20)
第27回ロボティクスシンポジアスライド
Ryuichi Ueda
•
390 views
シェル・ワンライナー160本ノック
Ryuichi Ueda
•
2.5K views
日本ロボット学会第139回ロボット工学セミナー
Ryuichi Ueda
•
866 views
シェル芸勉強会と会場の話
Ryuichi Ueda
•
1.1K views
移動ロボットのナビゲーション
Ryuichi Ueda
•
1.3K views
PythonとJupyter Notebookを利用した教科書「詳解確率ロボティクス」の企画と執筆
Ryuichi Ueda
•
1.9K views
第45回シェル芸勉強会オープニングスライド
Ryuichi Ueda
•
995 views
bash(の変な使い方)update
Ryuichi Ueda
•
1.9K views
第41回シェル芸勉強会 午後オープニング
Ryuichi Ueda
•
734 views
Searching Behavior of a Simple Manipulator only with Sense of Touch Generated...
Ryuichi Ueda
•
1K views
20181113_子ども夢ロボット&トーク
Ryuichi Ueda
•
1.4K views
第37回シェル芸勉強会イントロ
Ryuichi Ueda
•
536 views
シェル芸勉強会にみる、コミュニティを通じたIT学習
Ryuichi Ueda
•
5.4K views
ROSチュートリアル ROBOMECH2018
Ryuichi Ueda
•
2.6K views
poster of PFoE used in ICRA 2018
Ryuichi Ueda
•
718 views
Robot frontier lesson3 2018
Ryuichi Ueda
•
1.2K views
Robot frontier lesson2 2018
Ryuichi Ueda
•
1.7K views
Robot frontier lesson1 2018
Ryuichi Ueda
•
1.7K views
第32回信号処理シンポジウム「Raspberry PiとROSを使ったロボットシステム」
Ryuichi Ueda
•
3K views
2017年10月18日 シェル芸勉強会 meets バイオインフォマティクス vol.1 スライド
Ryuichi Ueda
•
2.3K views
Recently uploaded
gtk4_gem_usage.pdf
ssuser0ef4681
14 views
•
6 slides
テスト自動化.pdf
ssuserf8ea02
23 views
•
26 slides
遠隔お酌IoTLT2309.pptx
Yoshiaki Ito
134 views
•
12 slides
CatBoost on GPU のひみつ
Takuji Tahara
495 views
•
30 slides
IGDA Japan SIG Audio #20-1 室内・野外でのマイク収録と整音.pdf
IGDA Japan SIG-Audio
108 views
•
31 slides
MLOps Course Slides_JP(配布用).pdf
Yuya Yamamoto
39 views
•
31 slides
Recently uploaded
(12)
gtk4_gem_usage.pdf
ssuser0ef4681
•
14 views
テスト自動化.pdf
ssuserf8ea02
•
23 views
遠隔お酌IoTLT2309.pptx
Yoshiaki Ito
•
134 views
CatBoost on GPU のひみつ
Takuji Tahara
•
495 views
IGDA Japan SIG Audio #20-1 室内・野外でのマイク収録と整音.pdf
IGDA Japan SIG-Audio
•
108 views
MLOps Course Slides_JP(配布用).pdf
Yuya Yamamoto
•
39 views
20230921_IoTLT_vol103_kitazaki_v1.pdf
Ayachika Kitazaki
•
151 views
2023情報処理学会関西支部大会-G12.pdf
KoseiShimoda1
•
7 views
CCoE実践者コミュニティ#1_CCoEが進めるセキュリティカイゼンの旅.pptx
Tomoaki Tada
•
43 views
GraphQLはどんな時に使うか
Yutaka Tachibana
•
8 views
松下研究室紹介_関西大学高槻キャンパスオープンキャンパス
Matsushita Laboratory
•
27 views
画像生成AIの問題点
iPride Co., Ltd.
•
10 views
第34回シェル芸勉強会
1.
jus & USP友の会共催
シェル勉強会@関西 (第34回いつも難しい問題ばっかり出す上田が 真面目に考えた初心者用シェル芸勉強会) 千葉工業大学 上田隆一 この 作品 は クリエイティブ・コモンズ 表示 - 継承 3.0 非移植 ライセンスの下に提供されています。
2.
contents • 1: シェル芸とは •
珍しく普通のプレゼン • 2: 練習 • AWK、sed • 3: シェル芸勉強会 • 本編 2018/3/17 第35回シェル芸勉強会 2
3.
1: シェル芸とは 2018/3/17 第35回シェル芸勉強会
3
4.
ファイル • こういうやつ • これは何? •
正しく説明できますか? • 私も自信なし 2018/3/17 第35回シェル芸勉強会 4
5.
ファイルの歴史(Wikipediaから教えてもらったもので恐縮ですが・・・) • 「ファイル」という言葉が使われ始めたのは1952年 • 当初はパンチカードに格納された情報を指した •
初期のころは装置自体をファイルと呼ぶことが多かった • ファイルシステム機能がOSに搭載され、1つの補助記憶装置上 に複数の「ファイル」が存在するという形態が登場(1962年) • 一度に取り扱うデータを外部の記憶媒体にアウトプットした集 まりがファイル 2018/3/17 第35回シェル芸勉強会 5 Wikipedia, ファイル (コンピュータ)のページより (CC-BY-SA 3.0)
6.
ファイルの歴史(その後。さらにWikipediaから) • ・・・しかし、オブジェクト指向の考え方を導入し使用者を中心に おいたアップルのMacintoshにおいて、ファイルの取扱いにリソー スの概念が取り入れられた • ファイル内にデータとともにリソースを保管したことで、ファイル 作成後は、そのファイルを選択すれば(たとえばGUI画面上でファイ ルを選択するためダブルクリックすれば)、オペレーティングシス テムによって最適なアプリケーションが選択される(起動される) ようになった 2018/3/17
第35回シェル芸勉強会 6 Wikipedia, ファイル (コンピュータ)のページより (CC-BY-SA 3.0)
7.
ファイルの歴史(さらにその後。さらにさらにWikipediaから) • 一般的なパソコン利用者には、どんなアプリケーションで作っ たかを事前に思い出すことなく、作成済みのファイルの名前さ え識別して選択すれば、適切なソフトウェアが起動されるよう になり、これにより使い勝手が向上した • 後、Windowsにおいてこのリソースの概念は使用者には「拡張 子によるアプリケーションの関連づけ」として提示されるもの として知られる •
めでたしめでたし 2018/3/17 第35回シェル芸勉強会 7 Wikipedia, ファイル (コンピュータ)のページより (CC-BY-SA 3.0)
8.
その結果(ざっくり) • よかったこと • 便利になった •
それを否定する人はいないはず • コンピュータがよく分からない人でも仕事ができるようになった • これも良いこと • 私も「よく分からない人」だった(始めて触ったのは大学生のとき) • よかったとは言えないこと • 不用意にファイルをクリックして事故 • ウイルスなど • コンピュータがよく分からない人の声が大きくなった 2018/3/17 第35回シェル芸勉強会 8 注意: 中身は「aho」 というテキスト
9.
ファイルに対するマジョリティーの「理解」 • あるファイルは専用のアプリケーションでしか開けないのが普通 • 別にそれは良いが・・・ •
オフィススイートを売りさばく会社の儲けの構造の一部 • エクセル方眼紙の遠因 (ドキュメントはWordやExcelでしか作れないという認識) • マジョリティーの「理解」はプロを誘惑 • 後で困るような便利機能を無批判に提供 • どうせ理解できないからと決めつけてテキトーなアドバイス、商売 2018/3/17 第35回シェル芸勉強会 9
10.
テキトーな仕事の例 • 某メモ帳 • テキストの最初に「.LOG」と入れると日付が自動挿入 •
普通の人にとっては「便利だからいいじゃん」 • 仕事でシステムを作っていると大変気を使う • 他の勝手にファイル書き換え問題の事例 • 某メディアプレーヤーがMP3を • 某表計算ソフトがcsvファイルを • いちいち検証はできないけど、データファイルが自分たちのソフト ウェアでしか開けられないことを想定しているような態度 2018/3/17 第35回シェル芸勉強会 10
11.
ユーザはどうあるべき? • 便利なものは使った方が良い • 自動車が自動運転できるなら使うに越したことはない •
しかし、コンピュータは「情報の処理」という、 仕事や生活上で極めて重要なスキルと関係している。 • ユーザも成長することで効率の良い働き方、社会が実現 • 今の状況でユーザが成長できるか • どっちかというとアヘン窟への誘惑が多い 2018/3/17 第35回シェル芸勉強会 11
12.
テキストファイル • 特定の文字コードに基づき、字だけを表すバイナリだけで構成 • 何か他の情報をつけたければそれもテキストで記述 •
実は「マジョリティーの理解」に抗う存在 • 閲覧、編集、変換可能なソフトウェアが多い • 慣れないと不便で少し考えなければならないけど、主体的になる • そんなに理解は難しくないはずなんだけど・・・ • 「字をコンピュータに記録するときの普通の方法です」で説明が済むはず • 実際は、テキストをメールに添付すると 「何で開いていいか分からない」と言われる(普通という認識はない) 2018/3/17 第35回シェル芸勉強会 12
13.
テキストへの回帰 • 計算機の計算能力、記憶容量の向上 • 例: •
Microsoft Officeのファイルフォーマット • バイナリ → zip圧縮されたテキスト(XML)ファイル • ウェブアプリケーション • HTML、CSS、JavaScriptなどで構築。データはJSONなど。SVGなど画像もテキストで 扱われることが • ROS(robot operating system) • ロボット用分散ミドルウェア。主にテキストでセンサデータなどをやりとり • (スマートフォンのアプリなど逆の例も) 2018/3/17 第35回シェル芸勉強会 13
14.
コマンドとテキスト • コマンドのほとんどは汎用的なもの • 読み込むデータのフォーマットはテキスト一択 •
コマンドや(CLI上の)エディタのスキルは汎用的 • コード、文書、システムの設定ファイルの閲覧、編集 • 扱うファイルの種類 = スキルの数 • コマンドを使える人と使えない人の意識の違い • 使える人: GUIも使える。自分が思っているより効率よく仕事をしている。 • 使えない人: 「何でわざわざ不便なことをしているのか?」と思う 2018/3/17 第35回シェル芸勉強会 14 どうやって使えない人に興味を持ってもらうか
15.
「シェル芸」の活動 • コマンドに親しむ =
テキストに親しむ • まずはできる人に楽しんでもらえるように • できる人が楽しんでいると、その周りに人が集まって、できる人が増える。 さらにその周りに・・・と、マジョリティーまで降りていくことが目標 • 各自の秘技だったものが自然に表に出る流れを作る • シェル芸という名前、問題作り、雰囲気作り • 禁忌: 教義化、競技化、折伏、論争、攻撃、...(劣情に訴えない) 2018/3/17 第35回シェル芸勉強会 15
16.
界隈の人々の シェル芸活動 • 勉強会 • 初期はUSP友の会の幹事中心、 現在はその枠を超えて有志で •
今回が第34回(2012年10月〜) • 他流試合を企画いただく • #バイオシェル芸 • ウェブ上でのゲリラ活動 • いろんな人が愉快にやらかす • シェル芸bot爆誕 • 派生: 難読化シェル芸、危険シェル芸、 バイオシェル芸、Vimシェル芸 2018/3/17 第35回シェル芸勉強会 16
17.
まとめ • シェル芸 • 楽しければ良い。便利ならなおさら良い。 •
活動としてのシェル芸 • 社会的には全く知られていない • シェル芸が認知される必要はなく、ものの考えが浸透していくことが目標 • データとアプリケーションの分離 • 正義感を振り回してはいけないが、 非効率な方法、麻薬的な方法には毅然と茶化す • とりあえず本職がソフトウェア関係でない人を少しずつ・・・ 2018/3/17 第35回シェル芸勉強会 17
18.
2: 練習 2018/3/17 第35回シェル芸勉強会
18
19.
コマンド • ここで言っているのは主に「フィルタコマンド」 • フィルタコマンド •
標準入力からテキストを読んで加工し、標準出力から出す • 標準出力から出すだけのコマンドもあるが、基本的に仲間 2018/3/17 第35回シェル芸勉強会 19
20.
フィルタコマンド(と、そのお友達コマンド) • 基本的に何をするものか分かりにくい 2018/3/17 第35回シェル芸勉強会
20 1から6まで出して何になる? エディタで見たら良いじゃないか
21.
組み合わせると少し便利に 2018/3/17 第35回シェル芸勉強会 21 IPアドレスのリストを作る 1〜6から1つ数字をサンプリング
22.
もっと組み合わせるともっと便利に • Twitterの特定のアカウントがツイートするか監視 • 自分のサイトから特定の学会での論文リストを持ってくる 2018/3/17
第35回シェル芸勉強会 22
23.
どういうことか? • コマンドは自己完結しない • 組み合わせて使う •
プログラミング言語におけるライブラリの関数のような位置付け • 汎用的、単機能でないと使い回しができない • シェルスクリプトでもワンライナーでも • テキストを流れ作業で変換 • 組み合わせにある種のセンスが必要かもしれない • 普通のプログラミングとは少し違う • 関数型と言えるかもしれない 2018/3/17 第35回シェル芸勉強会 23
24.
誰でもできるの? • 正直よく分からない • 上達していくには:
端末を使う • テキストで文章を書いてみる • MacならばなるべくFinderを使わない • コマンドを調べて使ってみて調べて使ってみて・・・ • 通常の学習のプロセスが身についているなら大丈夫 2018/3/17 第35回シェル芸勉強会 24
25.
組み合わせが思いつかない!という人は • ワンライナー中、あるいはほどんとAWK、sed、Perlで済ます • 「シェル芸身につけたい!」という場合はAWKから入るのが良いかも •
コマンドは「AWKが面倒な場合に使う」くらいに考える • 例: seq 10の出力を2行ずつ足す 2018/3/17 第35回シェル芸勉強会 25 面倒 楽
26.
AWK(GNU Awk) • プログラミング言語だがワンライナー中でよく使う •
書いたコードは毎行に適用 • 各行に同じ処理を適用したいときに便利 • PerlやRubyではオプションが必要で地味に面倒 • 最初に覚えること • パターン: 検索に使う(grepのような使い方) • アクション: パターンにマッチした行に行う処理を書く 2018/3/17 第35回シェル芸勉強会 26 $ awk ‘パターン{アクション}パターン{アクション}...’
27.
パターンの練習 • 「http」という語句を検索 • 1列目が「http」 2018/3/17
第35回シェル芸勉強会 27
28.
パターンの練習(続き) • 7以上の行だけ抽出 • 偶数の行だけ抽出 •
先頭の3行だけ抽出 2018/3/17 第35回シェル芸勉強会 28
29.
アクションの練習 • 各行の数字を倍に • 1列目だけ抽出 2018/3/17
第35回シェル芸勉強会 29
30.
パターン+アクション • 偶数の行だけを抽出し2倍に • /etc/servicesのコメント以外の行の1列目を10行だけ出力 2018/3/17
第35回シェル芸勉強会 30
31.
sed(GNU sed) • 主に文字列の置換に利用 •
sed ’s/置換前の文字列/置換後の文字列/g’ • 後ろの「g」がないと1行あたり1回だけ置換 2018/3/17 第35回シェル芸勉強会 31
32.
sed + 正規表現 •
少しずつ覚えましょう • 小文字とスペースを検索して消去 • あらゆる斉藤さんを斉藤さんに一本化 2018/3/17 第35回シェル芸勉強会 32
33.
後方参照 • 正規表現で引っ掛けた文字列を再利用 • 1、2:
(正規表現) で引っ掛けた文字列が順に入る(はバックスラッシュ) • &: 引っ掛けた文字列全体が入る • -rをつけると(拡張正規表現が使え、)が不要に 2018/3/17 第35回シェル芸勉強会 33
34.
3: シェル芸勉強会 2018/3/17 第35回シェル芸勉強会
34
35.
今回の問題 • 簡単な問題 • ・・・と言っても誰でもすぐに分かるわけではありません •
進め方 • 1問15分くらい • 初心者 • こちらでヒントを出します • 紛れ込んだ玄人 • 別解をたくさんツイートのこと 2018/3/17 第35回シェル芸勉強会 35
36.
ということで開始 2018/3/17 第35回シェル芸勉強会 36