brand new note

インフラエンジニアを目指す大学院生のメモ

第31回シェル芸勉強会にお邪魔してきた

先日ちょっと憧れだった技術系の勉強会に初参戦しました。

シェル芸とは

主にUNIXオペレーティングシステムにおいて「マウスも使わず、ソースコードも残さず、GUIツールを立ち上げる間もなく、あらゆる調査・計算・テキスト処理を CLI端末へのコマンド入力一撃で終わらせること」

こういう説明をされるととってもロマンがあって面白そうじゃないですか…?

情報を学んでる人はみんなゲームとか作れる、みたいに思われがちですが、自分はネットワークメインで勉強していて実装力が0なので、Linuxのコマンドをガンガン打ったり、ごりごりスクリプトを書いたりアプリを作ったりすることはできません。そこで手を動かす技術に慣れる為の取っ掛かりとして "シェル芸" を始めるに至りました(就職しろ)

学んだこと

今回の参加で得た知見をまとめてみます。

プログラミング言語でありコマンド(?)。幅広いOSで動作。ウェブアプリやシステム管理、テキスト処理に強く、正規表現が使えます。テキスト処理はgrepsedawkを少しかじってただけで、perlは今回初めて触りました。コマンドの使い勝手による論争はあるみたいですがワンライナーの強い味方です。で、perl -pe で始めるとsedっぽく使えるよ、という話がこちら。理解不足ですが良記事な感じはします。

環境に依存しないワンライナーを書くならsedよりperlの方がいい - Qiita

このデータをテキストに直して端末上でこう編集したい!みたいな時にコマンド内で使う技が正規表現です。本場のシェル芸人は正規表現を打ち込むスピードが違う。こういう技術を身近に感じたいなぁと思います。

サルにもわかる正規表現入門

分かんない。はやくサルになりたい。

  • awkのNFとgensub

awkのNFは文字列を後ろから見るとき使います。awk '{print $NF}' なら、そのファイルの各行の末尾を出力。NF==2とかにすれば、末尾から2つを出力できます。 gensubは指定した文字列を特定の文字列に変換できる組込み関数です。subやgsubの上位互換?とりあえず組込み関数って言葉と便利なものがあるということは分かりました。

awkで末尾から数えてn番目のフィールドを取り出す。 - Qiita

  • sort

行を並び替えて整理するコマンド。オプションで並び替える順番を変えられます。これは都度覚えればいいのかな。

  • uniq

重複した文字列を削除するコマンド。-dで逆に重複したものだけ残すことができます。sortと組み合わせて使ったりします。

  • xxd

バイナリを16進数に変換するコマンド。-rで逆も可能です。一人前のシェル芸人になるには文字コードとか解析したりしないといけないらしいので、個人的にこの辺は必修科目です。

  • fold

文字列を指定した文字数で改行するコマンド。テキストの見栄えが良くなるってことなんでしょうか。割と便利そうです。

  • だいぶレベルが高い

勉強できるだけでなく、技術好きな方に実際に会って刺激を受けられるのいうのは貴重です。問題を解くだけでなくLT等で普段聞けない話が聞けるのも楽しみですね。自分が無限に実力不足だということを実感出来ます。しんどい。

第31回シェル芸勉強会 3/3(LT) - YouTube   LTはこちら。

おわりに

今回こういったイベントに出向いてみて、技術に対する親近感が結構沸いたのではないかなと感じました。こうした機会は研究でも段々増えているので、今後吸収できる知識量を増やしていければと思います。あと、次回のシェル芸勉強会は12月らしいです。予定が合えば行こうかな…