シェルスクリプトを介して複数のコマンドを実行する方法について興味がありました。
たとえば、試してみるために、.desktopを.shに接続して、すべての更新コードを実行するため、入力する必要はありません。複数ではなく、.shを介して単一のコマンドを実行する方法を知っています。
とにかく?
本当にシンプル-コマンドを分離する必要があります。たとえば、これ:
#!/bin/bash
Sudo apt-get update
Sudo apt-get upgrade
パッケージリストを更新してから、パッケージを更新します。別の可能性はこれです(おそらく、&&はupgrade
が正常に終了した場合にのみupdate
コマンドの実行を許可するため):
#!/bin/bash
Sudo apt-get update && Sudo apt-get upgrade
これにより、パッケージのリストを更新するためのコマンドが実行され、次にパッケージ自体が更新されます。これは、テキストファイルに保存する必要があります(例:ホームディレクトリのupdatescript
)。その後、次を実行して実行可能にできます。
chmod +x ./updatescript
または、ファイルを右クリックして、プロパティで実行可能にします。
ターミナルでこれを実行します:
./updatescript
注:
upgrade
コマンドで使用できるオプション(-y
)があり、パッケージをアップグレードする前にプロンプトを表示しません。パッケージをアップグレードする前に、apt-get
が何をしているかを確認することをお勧めします。このようなオプションの詳細については、man apt-get
を実行してください。
これはまた、更新対象を確認して実行できるため、ターミナルを使用してスクリプトを実行する方が理想的であることも意味します。 GUIで更新を実行する方法が必要な場合は、ソフトウェアセンターを使用してください。
@Wilfによる優れた回答にいくつかのポイントを追加するだけで、
何らかの理由で必要な場合、paralellでコマンドを実行できます。たとえば、OpenBoxのautostart
スクリプトは次のようになります。
#!/bin/bash
nitrogen --restore &
tint2 &
tilda
これにより、nitrogen
を使用して背景画像が設定され、パネルtint2
が開始され、Quake3スタイルのドロップダウンコンソールtilda
が同時に開始されます。これは、次のプログラムを起動する前にプログラムを終了する必要がない場合に便利です。 apt-get update
およびapt-get upgrade
の場合ではありません!
各行の終わりにある&
記号に注意してください。これにより、シェルはそのプロセスをバックグラウンドにフォークし、実行を継続します。 &&
は基本的にand
記号であり、command_1 && command_2
はexecutecommand_1
を実行し、成功して終了した場合にのみcommand_2
を実行しますが、 command_1 & command_2
は、最初の直後に2番目を開始します。
また、コマンドをスタックして、次のようにシリアルに実行することもできます。
#!/bin/bash
apt-get update
apt-get upgrade
これは、apt-get upgrade
が終了の後にapt-get update
を実行しますが、結果に関係ありません。そのため、たとえば、更新がネットワークエラーで終了した場合でも、アップグレードは実行されます。
;
記号apt-get update ; apt-get upgrade
を使用して、これを1行で行うこともできます。繰り返しますが、このソリューションは、これらの特定のコマンドに対して最適ではないですが、他の状況では便利になる場合があります。
最後に、&&
を含む行を次のように改行することもできます。
command_1 &&
command_2
これはcommand_1 && command_2
と同じです。