Taste of Tech Topics

Acroquest Technology株式会社のエンジニアが書く技術ブログ

Linux作業で使う便利Shellコマンド

どうも始めまして、上田です。

年末が近づいて忙しくなってきました。
最近は寒さと忙しさで趣味の自転車にも乗れず、
部屋でPCに向き合っています。

そんな時、何となく読んでしまうのがAdventCalender。

AdventCalender、普段は読むだけですが、
今日は先輩が始めた
新人/若手向け、これだけは知っとけTips25
書いてみました。

自分が新人の頃は、Linuxサーバでの作業するときに、
コマンドとLinux知らなくてとてもハマりました。

なので、今回は自分が知っておけばよかったと
後で後悔したコマンドをいくつか紹介したいと思います。

1.特定ファイルの設定を一律変更したいとき。

たとえば、あるディレクトリconfig_directory内に散らばる
30個ぐらいの設定ファイルに記載された設定
settingsA=parameter123
を、
settingsA=parameter124
に変換する、
みたいな作業があったとします。

30箇所ぐらいだと手で編集できてしまうので、
新人のときは慣れないviの使い方を調べながらポチポチ修正してました。

でもこれ、コマンド一行でできます。

find config_directory -type f -name *.conf | xargs sed -i "s/settingsA=parameter123/settingsA=parameter124/g"

こんなイメージ↓のファイル設定があったとして

コマンド実行後にはこうなります↓

※説明
find -type f -name *.conf
配下の.confファイル一覧を出力して、

xargs

でそれ以降のコマンドの引数にその前(左)で出力した結果を渡す。

sed -i "s<区切り文字、ここでは/><置換前>/<置換後>/<オプション、ここではg、繰り返し>"
にて、渡されたファイルの内容を全て置換しています。

※注意
いきなりこのコマンドを打つと予期せぬ文字列が置換されたりするので、
まずは実行する前にテスト実行して、結果を確認しましょう。
find config_directory -type f | xargs grep settingsA=parameter123

sedの代わりにgrepで置換前文字列を検索し、結果を確認。

検索系、置換系の作業は手間と抜けないことを考えると
必ずコマンドでやるべきですね。

2.流れているログの特定出力を追いたい時

ログを追うとき、何か実行しながらログを見たいということがあります。
特に確認したいキーワードについてのみ流れるログを確認したい、
そういったときに以下コマンドを使います。

tail -f dangerousDebugLog.log | grep -e settingsA -e settingsB

※説明
tail -f <対象ファイル>

で対象ファイルの中身を監視します。
ファイルに新しく書き出された内容があると、
その内容がコンソールに表示されます。

grep -e settingsA -e settingsB

にて出力された内容の"settingsA"もしくは"settingsB"を含む行のみを
絞って出力します。

こんな感じになります↓

これもよく使いますね。

また、流れていくコンソールを一時的にとめたいときは、
Ctrl+sで止まります。

Ctrl+qで再開。

Ctrl+cで終了。

まとめ

ここまで2つコマンドを紹介しましたが、
人によっては違うコマンドやオプションを使うかもしれません。
ここで紹介したコマンドはちょっとした作業の参考になればと思います。

では。