Bash
UNIX
まとめ
UNIXコマンド

サーバ作業でよく使うUNIXコマンド

概要

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