Publicidad

シェル芸勉強会へようこそ

31 de Oct de 2015
Publicidad

Más contenido relacionado

Publicidad

シェル芸勉強会へようこそ

  1. シェル芸勉強会へ ようこそ usp友の会 田代勝也
  2. まずは御礼 ご参加いただき 誠に ありがとうございます
  3. テキスト処理の重要性 • 各種テキストファイル • データファイル HTML、JSON、RDF • 設定ファイル • ログファイル • プログラムコード  C、Java、Ruby • 各種命令の文字列 • コマンド実行 • SQL文 • HTTP、SMTP
  4. テキスト処理の重要性 情報処理に テキスト処理は 欠かせない!
  5. テキスト処理に強くなろう • テキストデータの整理 • ログデータの整理とか • データからSQL文作ってデータぶち込む • テストデータ入れたいとか • プログラムコードの一括変換 • 型を変えたいとか 、関数名変えたいとか シェル芸で出来ると便利!
  6. テキストエディタ何使う? Vidual Studio、Eclipse SublimeText、Atom 秀丸、サクラエディタ、TeraPad Emacs、Vim IDEエディタ論争!?
  7. テキストエディタ何使う? だが心配ない! だって テキストエディタ 使わない!
  8. シェル芸のイメージ 一般的?なイメージ コワイ! メラしか使えないのに ベギラゴンが飛び交ってる
  9. シェル芸のイメージ • いきなり長いワンライナ書いてない • 出力を確認しながら少しずつ • 慣れてないから難しく見える 訓練することで誰でも!
  10. manにもシェル芸が FreeBSDのlddコマンドマニュアルにシェル芸 https://www.freebsd.org/cgi/man.cgi?query=ldd ワンライナーは 何も特別なことじゃない! そのままだと問題があるので修正版がこちら $ find /usr/bin -type f | xargs -n1 file -F' ' | grep ELF | cut -f1 -d ' ' | xargs ldd -f '%A %on' | grep libc.so.7
  11. スクリプト言語としてのシェル • 変数 • スカラ、配列 • 制御構造 • if、for、while • 関数 • 定義、スコープ • データを変数に持たせる • 制御構造で処理する • 関数で処理の共通化 これらは苦手で遅い スクリプト組む時・・
  12. スクリプト言語としてのシェル 手続き型な言語としては 正直イケてない・・・ しかし! パイプを使った ストリーム処理が得意
  13. パイプの利点 • 簡単な問題に分解 • コードの簡素化 • バグの軽減につながる • 並列処理 • マルチコアの場合自動的に並列化 • 禁断の界王拳2倍超え(CPU300%とか) • メモリ使用量 • sortされたデータなら大幅に軽減可 モダンな プログラミング に対して 利点も
  14. シェルプログラミングの考え方 • データはファイルに持たせる • ファイル読み書きは得意(リダイレクト) • フィルタとして処理 • パイプでのストリーム処理 (関数型の考え方) • 並列処理の活用 • シェルのパイプやバックグラウンド機能
  15. コマンドを知る •テキスト処理系 •単機能 •cat、grep、sort、uniq、 tail、head、tr、paste、 diff、comm •多機能 •sed •ファイル操作系 •ls、find •シーケンス生成 •seq、jot •その他 •xargs、time、tee、echo、 printf、bc、curl •最終兵器 •awk •perl、ruby (-alne)
  16. Open usp Tukubaiの紹介 • ユニケージ開発手法で利用されるコマンド群 • よく使われるコマンドをオープンソースで公開 • 端末が有用な道具になる • シェル芸にも強い味方 何が嬉しいのか?
  17. Open usp Tukubaiの紹介 • スペース区切りのデータが前提 • フィールド数は固定 • 固定数じゃなくていい場合も • 処理速度は遅い • Pythonで実装(より高速なHaskell版やShell版も) • 商用版は超高速(C言語)
  18. Open usp Tukubaiの紹介 •日付時刻処理 •mdate、calclock、yobi •各種集計 •gyo、count、sm2、map •フィールド切出 •self、delf Open usp Tukubaiコマンドマニュアル https://uec.usp-lab.com/TUKUBAI_MAN/CGI/TUKUBAI_MAN.CGI?POMPA=LIST •行列変換 •tarr、yarr、tateyoko •データ結合 •loopj、loopx、join0、join1、 join2 •その他 •getfirst、getlast、juni、mojihame
  19. 古くて新しいパラダイム • テキストデータは基本で自由 • ストリーム処理という考え方 • 並列処理で高速化も 改めてUNIXの基本に たち返ろう!
  20. シェル芸情報 • USP友の会 • https://www.usptomo.com • UEC - use engineers' community site • https://uec.usp-lab.com/ INFO/CGI/INFO.CGI? POMPA=LIST • 上田ブログ(会長) • https://blog.ueda.asia • 大チェッカー:シェル芸 人たち • https://daichkr.hatelabo.jp/ antenna/960679194075891200 • 稚拙ブログ • http://papiro.hatenablog.jp
Publicidad