Linuxで複数のコマンドを1行で連続実行する方法

Linuxで複数のコマンドを1行で連続実行する方法

Linuxでコマンドを実行するときに、複数のコマンドを1行で続けて実行したい場合があります。そんなときに便利な方法を紹介します。

この記事は、以下の環境で実行した結果を基にしています。他のエディションやバージョンでは、動作結果が異なる場合があることをご了承ください。

ソフトウェアバージョン
CentOS Linux7.4.1708

コマンドを連続実行する方法

cmd1の標準出力をcmd2の標準入力に渡す

# cmd1 | cmd2

cmd1に続けてcmd2を実行する

# cmd1 ; cmd2

cmd1の実行に成功したときに、cmd2を実行する

# cmd1 && cmd2

cmd1の実行に失敗したときに、cmd2を実行する

# cmd1 || cmd2

複数のコマンドをひとまとまりとして扱う

# (cmd1; cmd2; cmd3) >testfile.log
Memo

複数コマンドをひとまとまりにすると、たとえば「(date; pwd; ls) >kekka.log」と実行することで、date、pwd、lsの実行結果をまとめてkekka.logファイルに書き込めます。

ちなみに、この場合新しいシェル上でコマンドが実行されますが、現在のシェル上で実行させたいときは、()ではなく{}を使用します。

あとがき

上に紹介した方法を駆使すれば、よりコンパクトなコードでコマンドを連続実行できます。