概要
UNIXコマンドについて、サーバ作業をするさいのイディオムをまとめます。
シェルを書くためのイディオムではなく、その場でさっと作業するためよく利用するにやつです。
文字列の検索
#単純に検索
grep 検索するキー 検索対象ファイル
#何らかの処理結果を検索
cat 検索対象ファイル | grep 検索するキー
#ルートから検索する場合エラーが出るのでエラーは捨てる
grep 検索するキー / 2>/dev/null
文字列の置換
#sedでするパターン(ファイルを直接書き換え)
sed -i -e "s/置換対象の文字列/置換する文字列/" 対象ファイル
#=>ファイルが直接書き換わる
#sedでするパターン(パイプ受け取り)
cat 対象ファイル | sed -e "s/置換対象の文字列/置換する文字列/"
#=>標準出力に結果が出力される
#viで置換するパターン
:%s/hoge/fuga/
当日用の日付ディレクトリを作成する
もっともよく使うコマンドです。
#基本パターン
mkdir `date '+%Y%m%d'`
#=>20180131
#同日作業で被らないように時間付き
mkdir `date '+%Y%m%d_%H%M%S'`
#=>20180131_221611
#プロセスID付き
mkdir `date '+%Y%m%d'`_ID$$
#=>20180131_ID39015
プロセスIDの取得
以下は、sshdのプロセスを取得する
ps -ef | grep sshd | grep -v grep | awk '{ print $2}'
#=>953
#=>15389
#=>15392
特定行の抜き出し
#cutコマンドを利用するパターン(シンプルだが文字列の生成はやりづらい)
echo a b c | cut -f2 -d" "
#=>b
#awkを利用するパターン(文字列の生成がやりやすい)
echo a,b,c,d | awk 'BEGIN {FS=","} {print "先に"$2"後に"$1}'
#=>先にb後にa
重複行の削除
cat 対象ファイル | sort | uniq
#=>標準出力に結果が出力される
繰り返し処理
この形式で覚えておけば大抵の事には対応できるはず。
cat list.txt | while read LINE; do
echo ${LINE}
done