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

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

WindowsやLinuxでコマンド操作を行っていると、複数のコマンドを1行で続けて(ワンライナーで)実行したいときがあります。

そこでここでは、WindowsのコマンドプロンプトやPowerShell、Linuxのそれぞれで、複数のコマンドを1行で連続実行する方法を紹介します。

Windowsの場合

コマンドプロンプト

Windowsのコマンドプロンプトで複数のコマンドを1行で連続実行するときの記述方法は、次のとおりです。

cmd1に続けてcmd2を実行したいとき:

単純に、複数のコマンドを連続実行したいときは「&」を使用します。以下の場合、cmd1の実行結果にかかわらずcmd2を実行します。

C:\> cmd1 & cmd2

cmd1の標準出力をcmd2の標準入力に渡したいとき:

cmd1の標準出力をcmd2の標準入力に渡したいときは「|」を使用します。

C:\> cmd1 | cmd2

cmd1の実行に成功した場合のみ、cmd2を実行したいとき:

cmd1の実行に成功した場合にのみ、cmd2を実行したいときは「&&」を使用します。

C:\> cmd1 && cmd2

cmd1の実行に失敗した場合のみ、cmd2を実行したいとき:

cmd1の実行に失敗した場合にのみ、cmd2を実行したいときは「||」を使用します。

C:\> cmd1 || cmd2

Windows PowerShell

WindowsのPowerShellで複数のコマンドを1行で連続実行するときの記述方法は、次のとおりです。

cmd1に続けてcmd2を実行したいとき:

単純に、複数のコマンドを連続実行したいときは「;」を使用します。以下の場合、cmd1の実行結果にかかわらずcmd2を実行します。

PS C:\> cmd1 ; cmd2

cmd1の標準出力をcmd2の標準入力に渡したいとき:

cmd1の標準出力をcmd2の標準入力に渡したいときは「|」を使用します。

PS C:\> cmd1 | cmd2

なお、Windows 10や11に標準搭載の「Windows PowerShell」では「&&」や「||」といった論理演算子は使用できませんが、新しいクロスプラットフォーム向けの「PowerShell7」をインストールすれば利用できます。

PowerShell 7.0 の新機能 - PowerShell | Microsoft Docs

Linuxの場合

Linuxで複数のコマンドを1行で連続実行するときの記述方法は、次のとおりです。

cmd1に続けてcmd2を実行したいとき:

単純に、複数のコマンドを連続実行したいときは「;」を使用します。以下の場合、cmd1の実行結果にかかわらずcmd2を実行します。

# cmd1 ; cmd2

cmd1の標準出力をcmd2の標準入力に渡したいとき:

cmd1の標準出力をcmd2の標準入力に渡したいときは「|」を使用します。

# cmd1 | cmd2

cmd1の実行に成功した場合のみ、cmd2を実行したいとき:

cmd1の実行に成功した場合にのみ、cmd2を実行したいときは「&&」を使用します。

# cmd1 && cmd2

cmd1の実行に失敗した場合のみ、cmd2を実行したいとき:

cmd1の実行に失敗した場合にのみ、cmd2を実行したいときは「||」を使用します。

# cmd1 || cmd2

複数のコマンドをひとまとまりとして扱いたいとき:

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

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

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

あとがき

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