コマンド
CUI

CUIに苦手意識がある人でも使えるコマンド

More than 1 year has passed since last update.

ラクス Advent Calendar 2017の9日目の記事です。
昨日はsts-sd2さんの知識0からAnsibleハンズオンをやってみたでした。
構成管理は積年の課題ですね。

はじめに

ラクスに入社して1年半経過しました。
前職ではお客様先に出向し、自社システムの構築を行うSI業務を中心に従事していて、ラクスに入社後はクラウドサービスの開発を行っています。
https://www.rakus.co.jp/service/

環境の違い

SI業務を行っていた時は、開発時に全ての作業を自分のローカルPC(Windows)で行っていました。
・Eclipse(All-in-one)
・Tomcat
・Oracle or DB2
・他必要なものなどなど

ラクスでは各個人専用のLinuxテスト環境を利用できるので、ローカルPCで開発しなくてもよい環境になっています。

ただし、GUIにずぶずぶの私がvimを駆使することはもちろんできず、コーディングをローカルPC(Windows)で行っています。
IDEの機能を利用して修正結果が自動的にリモート環境に反映されるようにしています。

利用したコマンドの上位

そんなGUIずぶずぶの私がCUIのコマンドをいかに活用できているかすごく気になったので、CUIコマンドで

history

と実行し、過去のコマンド履歴を集計し、実行したコマンド上位を調べてみました。
ちなみに、CUIウィザード級の方であれば、パイプや各種コマンドを駆使して集計や上位順の表示などできると思いますが、私はもちろんできないので、

history > history.log

の結果ファイルをローカルPCに転送し、エディタとExcelの集計/ソートでなんとか上位順の表示をしたのは言うまでもないですが。
集計期間は2017年1月~11月です。
※serviceとか、業務に関係するコマンドは除外しています。

image.png

・・・あまりにもバリエーションが少なくて我ながら恥ずかしいですね (〃▽〃)
とはいえコマンドをそこまで活用できなくても、開発はできるという事ですね!!!

おすすめ

そんな私ですら使っているコマンドなので、Linuxテスト環境を利用している方に必見のコマンドを私見と共にお伝えします。

tail -f ファイルパス

tail単品ではあんまり利用シーンないです。
-fオプション(ファイルが大きくなるたびに追加されたデータを出力)と組み合わせることによって、ログをリアルタイムでコンソール上で確認できます。
テストする時はあなたのそばにいつも「tail -f」です。

よくよく考えるとローカルPCでテストしてた時はEclipseのコンソールログに同じものが出力されますね。。。
WindowsだとPowerShell上で「Get-Content [ログファイルのパス] -Wait -Tail 100」で同じような事ができます。

grep
zgrep

grepはファイルから文字列を検索するコマンドですので、パイプと組み合わせることで大活躍です。
ウィザード級の方々は「find」「grep」「sed」を組み合わせるという大魔法を使っているようですが、私にはまだ無理です。
意外だったのがzgrepで(知らなかった、、、)、grepと同じような感覚で圧縮ファイルを検索できます。
同じようなコマンドでzlessとかzcatとかもあります。

ちなみに以前の私はLinux環境に各種ファイルがあるときに、一旦ローカルPCに関連ファイルをダウンロードし、エディタのgrep機能で必要な情報を抽出し、加工するという恐ろしい手間をかけていました。。。

md5sum

チェックサムを計算して表示する。
このコマンドがイケてるというよりも、テスト環境で試したスクリプトファイルを別環境で実行する時に間違っていないか確認する時に活躍。
私はテキストエディタで作業するときなど、Ctr + S (上書き保存)を癖のようにしてしまうので、完了したスクリプトファイルに想定外の内容が入力/保存されてしまう事があります。
そのため、ファイルの中身が変わっていないか確認する時に利用しますね。
テスト環境であらかじめmd5sum結果を取得しておき、別環境で実行する時は
「md5sum ファイル | grep "テスト環境でのmd5sum結果"」
といったコマンドで事前確認すると安心です。

おまけ

Linux環境上の設定ファイルを変更する時に、通常はviを利用すると思いますが、私のコマンド履歴を見るとほとんどvi/vimは利用していませんでした。
cat、lessなどの利用回数もかなり少ないです。
私なりの解決方法がWindowsPCからFTPクライアントでLinux環境のファイルを確認し、編集後アップロードしています。
スクロールを多用してババっと確認した方が私的には作業速いんですよね。
WinSCPというツールを現在利用していますが、FileZilla・FFFTPなど他のツールも使った事があり、ツールによる誤差はあまり感じた事がありません。

image.png

最後に

Winodwsでの開発に慣れ親しんだ私でも、Linuxテスト環境と組み合わせた開発は意外にできています(できているはず!)。
様々な手段(コマンドの活用)が利用できるのはもちろんいいと思いますが、自分なりの効率のいい手段を見つけるのが大事なんだなと思います。