GNU/Linux >> Linux の 問題 >  >> Linux

複数の Linux コマンドを 1 行にまとめて実行する

セミコロンを使用してコマンドを区切ることができます:

cd /my_folder;rm *.jar;svn co path to repo;mvn compile package install

そうですか?


前のコマンドが成功した場合にのみ各コマンドを実行する場合は、 && を使用してそれらを結合します オペレーター:

cd /my_folder && rm *.jar && svn co path to repo && mvn compile package install

コマンドの 1 つが失敗すると、それに続く他のすべてのコマンドは実行されません。

前のコマンドが失敗したかどうかに関係なく、すべてのコマンドを実行する場合は、セミコロンで区切ります:

cd /my_folder; rm *.jar; svn co path to repo; mvn compile package install

あなたの場合、次のコマンドの実行が前のコマンドの成功に依存する最初のケースが必要だと思います.

すべてのコマンドをスクリプトに入れて、代わりに実行することもできます:

#! /bin/sh

cd /my_folder \
&& rm *.jar \
&& svn co path to repo \
&& mvn compile package install

行末のバックスラッシュは、次の行が新しいコマンドであるとシェルが認識しないようにするためにあります。バックスラッシュを省略すると、コマンド全体を 1 行で記述する必要があります。

バックスラッシュと && を使用するよりも便利な方法 どこでも、コマンドのいずれかが失敗した場合にスクリプトを終了するようにシェルに指示します。 set を使用してそれを行います -e を使用した組み込み関数 口論。これにより、より自然な方法でスクリプトを書くことができます:

#! /bin/sh
set -e

cd /my_folder
rm *.jar
svn co path to repo
mvn compile package install

それをファイルに保存します。たとえば、myscript です。 、実行可能にします:

chmod +x myscript

マシン上の他のプログラムと同じように、そのスクリプトを実行できるようになりました。しかし、 PATH にリストされているディレクトリ内に配置しない場合 環境変数 (例:/usr/local/bin 、または一部の Linux ディストリビューションでは ~/bin )、そのスクリプトへのパスを指定する必要があります。現在のディレクトリにある場合は、次のように実行します:

./myscript

スクリプト内のコマンドは、最初の例のコマンドと同じように機能します。次のコマンドは、前のコマンドが成功した場合にのみ実行されます。すべてのコマンドを無条件で実行するには、単に set -e を呼び出さないでください :

#! /bin/sh

cd /my_folder
rm *.jar
svn co path to repo
mvn compile package install

を使用していることがわかりました。コマンドを分離するには、フォアグラウンドでのみ機能します。例:

cmd1; cmd2; cmd3 & - cmd3 のみを実行します バックグラウンドで、cmd1 && cmd2 && cmd3 & - エラーがない場合、チェーン全体をバックグラウンドで実行します。

無条件実行に対応するには、括弧を使用してこれを解決します:

(cmd1; cmd2; cmd3) & - いずれかのステップが失敗した場合でも、一連のコマンドをバックグラウンドで実行します。


それらをすべて一度に実行するには、パイプライン キー "|" を使用できます。そのように:

$ cd /my_folder | rm *.jar | svn co path to repo | mvn compile package install

Linux
  1. ハードウェア情報を表示するためのLinuxコマンド

  2. Linux コマンド ラインの基本 – コマンド ラインからのコマンドの実行

  3. コマンドLinuxラインからのmatlab実行スクリプト

  1. ターミネーターを使用して複数のSSHセッションにコマンドを送信する

  2. 1つのUSBに複数のLinuxディストリビューションをインストールする方法

  3. 1つのSudoで一連のコマンドを実行しますか?

  1. Unix Sed チュートリアル:複数の Sed コマンドを実行する方法

  2. WINEで実行中のプログラムからシェルコマンドを実行

  3. Linux 端末からメールを 1 行で送信する