コマンドライン操作(ショートカット, パイプ, リダイレクト)

Linuxでコマンドライン操作をするうえで押さえておきたい基礎知識を紹介します。
「便利なショートカット」「コマンドの連続実行」「パイプ・リダイレクトの機能」などについて取り上げてます。

ディレクトリ記号

特定ディレクトリの位置を表す記号があります。

記号 概要
~ ホームディレクトリを表します。
. カレントディレクトリを表します。
.. 1つ上のディレクトリを表します。
~- 直前にいたディレクトリを表します。

便利なショートカット

コマンド 説明
Tabキー コマンド、フォルダ、ファイル名を補完します。
Ctrl + l スクリーンをクリアにします。
Ctrl + a カーソルを行頭に移動します。
Ctrl + e カーソルを行末に移動します。
Ctrl + u カーソルより行頭方向の文字列を削除します。
Ctrl + k カーソルより行末方向の文字列を削除します。
Ctrl + c 実行中の処理があれば中断します。
表示中のコマンド入力があれば消します。
Ctrl + d ログアウトします。
Ctrl + r コマンド履歴を後方検索します。
以前実行したコマンドを再度実行する際に便利です。

複数行にまたがった入力

コマンドを複数行にまたがって入力したい場合、行末にバックスラッシュ( \ )を記述します。

例えば、 grep -nr ‘aaa’ . を下記のように複数行で記述できます。

$ grep \
> -nr \
> 'aaa' \
> .

コマンドの連続実行

コマンド 説明
コマンド1 ; コマンド2 コマンド1を実行し、次にコマンド2を実行します。
コマンド1 && コマンド2 コマンド1が正しく実行されたとき、コマンド2を実行します。
コマンド1 || コマンド2 コマンド1がエラーになったとき、コマンド2を実行します。

パイプ

パイプ( | )を利用すると、コマンドの出力内容を別コマンドの入力内容にできます。

$ ps -ef | grep "nginx"

teeコマンド|複数箇所に出力

出力結果をパイプを通じて teeコマンド で受け取ると、出力を分岐させることができます。

例えば次のようにすると、出力結果をファイルに出力しつつ、標準出力でも出力できます。

$ コマンド | tee ファイル

上書きでファイル出力したい場合、「-a」オプションを付けます。

$ コマンド | tee -a ファイル

複数ファイルに書き出すこともできます。

$ コマンド | tee ファイル1 ファイル2

リダイレクト

通常コマンドの出力結果は画面に表示されますが、リダイレクトを利用することで出力結果をファイルなどに変更できます。

コマンド 説明
コマンド > 出力先ファイル
コマンド 1> 出力先ファイル
標準出力をリダイレクト(上書き)
コマンド >> 出力先ファイル
コマンド 1>> 出力先ファイル
標準出力をリダイレクト(末尾に追記)
コマンド 2> 出力先ファイル 標準エラー出力をリダイレクト(上書き)
コマンド 2>> 出力先ファイル 標準エラー出力をリダイレクト(末尾に追記)

よく利用される使われ方を紹介します。

標準出力と標準出力エラーを別々のファイルに保存する

$ コマンド 1>出力先ファイル1 2>出力先ファイル2

標準出力と標準出力エラーを1つのファイルに保存する

$ コマンド > 出力先ファイル 2>&1

※ 2>&1
標準エラー出力(2)標準出力(1) に入れています。

出力を破棄

$ コマンド > /dev/null 2>&1

/dev/null へリダイレクトすることで、出力を破棄しています。

複数コマンドの実行結果を1つのファイルに保存

$ (コマンド1; コマンド2) > 出力先ファイル