2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

シェル30本ノックを社内向けにアレンジして勉強会で使ってみた

Posted at

株式会社オズビジョン@terra_yuccoです。

今更ながら Software Design 2017年1月号 の「シェル30本ノック」に触れる機会がありました。社内勉強会の題材として。

  • ノックそのままはかなり癖がある
    • 少なくとも一般的なWeb開発者に求められるのはほぼ一部
  • タイムボックスが30分

という理由から、設問を社内向けにアレンジして利用しました。
元の著作権に引っかからない範囲で、出題意図や、参加した3チームから出た回答をシェアしたいと思います。

なぜWebの会社でシェル?

Web屋さんですが、サーバはAmazon LinuxのEC2ですし、故障対応時などはsshログインしてlinuxコマンドを叩きます。ログインシェルはbashです。
プロセスの起動状況を確認したり、アクセスログの集計をしたり、利用するシーンが少なくないので、この機会にちょっと頭を捻ってみても良いかな?と思いました次第。

実際の問題

Q1

設問

これはノックのものをそのまま使いました。問題が気になる方はぜひ実際の書籍を読んでみてください。

各チーム回答集

# team 1
cat files.txt | grep -E "\.exe$"
# team 1 別解
cat files.txt | grep  "\.exe$"
# team 2
grep "\.exe$" files.txt
# team 3
grep -E ".*\.exe$" files.txt

環境はかなり古いamazon linuxから立ち上げているsandboxを利用しています。
4つの回答がどれも一致しないのが面白いなと個人的には感じました。grepするときに、まず前段にcatを挟む人、-Eの有無など。このあたり、パッケージのディストリビューションによっても挙動が変わったりするので、面白いところです。

Q2

設問

ファイルからの設定の抽出

sandboxサーバのhostsに記載されているホスト名のうち
「db」が含まれているホスト名を列挙する
コメントアウトされている行は除く

各チーム回答集

# team 1
cat /etc/hosts | grep "db" | grep -v -E "^#" | awk '{print $2}'
# team 2
grep "db" hosts | grep -v '^#' | awk '{print $2}'
# team 3 - 設問読み違え
grep -E "^[^#].*db" /etc/hosts

team1とteam2はgrepの癖こそあるものの、ほぼほぼ同じ結果となりました。
面白いのはteam3で「ホスト名だけを抜く」という問題文こそ見落としましたが、コメントアウト行を除くという条件も最初のgrepに含めているところがほかの2チームと違うところ。

あと2問ありましたので、また次の更新で追記します。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?