Linuxで役立つ10の連鎖演算子と実用的な例


Linuxコマンドの連鎖とは、複数のコマンドを組み合わせて、それらの間で使用される演算子の動作に基づいて実行させることを意味します。 Linuxでのコマンドの連鎖は、シェル自体で短いシェルスクリプトを記述し、ターミナルから直接実行するようなものです。連鎖により、プロセスの自動化が可能になります。さらに、無人のマシンは、チェーンオペレーターの助けを借りて非常に体系的な方法で機能することができます。

この記事は、頻繁に使用されるコマンドチェーン演算子に光を当てることを目的としています。短い説明と対応する例を使用すると、生産性が向上し、システムの負荷を軽減するだけでなく、短くて意味のあるコードを記述できる場合があります。

1.アンパサンド演算子(&)

‘&‘の機能は、コマンドをバックグラウンドで実行することです。コマンドに続けて空白と「&」を入力するだけです。バックグラウンドで複数のコマンドを一度に実行できます。

バックグラウンドで1つのコマンドを実行します。

[email protected]:~$ ping ­c5 www.tecmint.com &

2つのコマンドをバックグラウンドで同時に実行します。

[email protected]:/home/tecmint# apt-get update & apt-get upgrade &

2.セミコロン演算子(;)

セミコロン演算子を使用すると、複数のコマンドを一度に実行でき、コマンドの実行は順番に実行されます。

[email protected]:/home/tecmint# apt-get update ; apt-get upgrade ; mkdir test

上記のコマンドの組み合わせは、最初に更新命令を実行し、次にアップグレード命令を実行し、最後に現在の作業ディレクトリの下に「テスト」ディレクトリを作成します。

3. AND演算子(&&)

AND演算子(&&)は、最初のコマンドの実行が成功した場合、つまり最初のコマンドの終了ステータスが0の場合にのみ、2番目のコマンドを実行します。このコマンドは、最後のコマンドの実行ステータスを確認するのに非常に役立ちます。

たとえば、ターミナルでlinksコマンドを使用してウェブサイトtecmint.comにアクセスしたいのですが、その前に、ホストが稼働しているかどうかを確認する必要があります。

[email protected]:/home/tecmint# ping -c3 www.tecmint.com && links www.tecmint.com

4. OR演算子(||)

OR演算子(||)は、プログラミングの「else」ステートメントによく似ています。上記の演算子を使用すると、最初のコマンドの実行が失敗した場合、つまり最初のコマンドの終了ステータスが「1」の場合にのみ、2番目のコマンドを実行できます。

たとえば、root以外のアカウントから「apt-getupdate」を実行したいのですが、最初のコマンドが失敗すると、2番目の「linkswww.tecmint.com」コマンドが実行されます。

[email protected]:~$ apt-get update || links tecmint.com

上記のコマンドでは、ユーザーがシステムを更新することを許可されていないため、最初のコマンドの終了ステータスが「1」であり、最後のコマンド「linkstecmint.com」が実行されることを意味します。

最初のコマンドが正常に実行され、終了ステータスが「0」の場合はどうなりますか?明らかに! 2番目のコマンドは実行されません。

[email protected]:~$ mkdir test || links tecmint.com

ここで、ユーザーは自分のホームディレクトリに「test」フォルダを作成します。このフォルダに対してユーザーは許可されています。コマンドは正常に実行され、終了ステータスは「0」であるため、コマンドの最後の部分は実行されません。

5. NOT演算子(!)

NOT演算子(!)は、「except」ステートメントによく似ています。このコマンドは、指定された条件を除くすべてを実行します。これを理解するには、ホームディレクトリにディレクトリ「tecmint」を作成し、それに「cd」します。

[email protected]:~$ mkdir tecmint 
[email protected]:~$ cd tecmint

次に、「tecmint」フォルダにいくつかの種類のファイルを作成します。

[email protected]:~/tecmint$ touch a.doc b.doc a.pdf b.pdf a.xml b.xml a.html b.html

「tecmint」フォルダ内にすべての新しいファイルを作成したことを確認してください。

[email protected]:~/tecmint$ ls 

a.doc  a.html  a.pdf  a.xml  b.doc  b.html  b.pdf  b.xml

ここで、「html」ファイルを除くすべてのファイルをスマートな方法で一度に削除します。

[email protected]:~/tecmint$ rm -r !(*.html)

確認のために、最後の実行。 lsコマンドを使用して、使用可能なすべてのファイルを一覧表示します。

[email protected]:~/tecmint$ ls 

a.html  b.html

6. AND – OR演算子(&& – ||)

上記の演算子は、実際には「AND」演算子と「OR」演算子の組み合わせです。これは「if-else」ステートメントによく似ています。

たとえば、成功した場合は「検証済み」をエコーし、そうでない場合は「ホストダウン」をエコーする場合は、tecmint.comにpingを実行しましょう。

[email protected]:~/tecmint$ ping -c3 www.tecmint.com && echo "Verified" || echo "Host Down"
PING www.tecmint.com (212.71.234.61) 56(84) bytes of data. 
64 bytes from www.tecmint.com (212.71.234.61): icmp_req=1 ttl=55 time=216 ms 
64 bytes from www.tecmint.com (212.71.234.61): icmp_req=2 ttl=55 time=224 ms 
64 bytes from www.tecmint.com (212.71.234.61): icmp_req=3 ttl=55 time=226 ms 

--- www.tecmint.com ping statistics --- 
3 packets transmitted, 3 received, 0% packet loss, time 2001ms 
rtt min/avg/max/mdev = 216.960/222.789/226.423/4.199 ms 
Verified

ここで、インターネット接続を切断し、同じコマンドを再試行してください。

[email protected]:~/tecmint$ ping -c3 www.tecmint.com && echo "verified" || echo "Host Down"
ping: unknown host www.tecmint.com 
Host Down

7.パイプ演算子(|)

このPIPE演算子は、最初のコマンドの出力が2番目のコマンドへの入力として機能する場合に非常に役立ちます。たとえば、「ls -l」の出力を「less」にパイプライン処理して、コマンドの出力を確認します。

[email protected]:~$ ls -l | less

8.コマンドの組み合わせ演算子{}

2つ以上のコマンドを組み合わせると、2番目のコマンドは最初のコマンドの実行に依存します。

たとえば、ディレクトリ「bin」が使用可能かどうかを確認し、対応する出力を出力します。

[email protected]:~$ [ -d bin ] || { echo Directory does not exist, creating directory now.; mkdir bin; } && echo Directory exists.

9.優先演算子()

オペレーターは、コマンドを優先順に実行することを可能にします。

Command_x1 &&Command_x2 || Command_x3 && Command_x4.

上記の疑似コマンドで、Command_x1が失敗した場合はどうなりますか? Command_x2、Command_x3、Command_x4のいずれも実行されません。このため、次のように優先順位演算子を使用します。

(Command_x1 &&Command_x2) || (Command_x3 && Command_x4)

上記の疑似コマンドでは、Command_x1が失敗すると、Command_x2も失敗しますが、それでもCommand_x3とCommand_x4の実行は、Command_x3の終了ステータスによって異なります。

10.連結演算子(\)

名前が示すように、連結演算子(\)は、シェル内の複数の行にわたって大きなコマンドを連結するために使用されます。たとえば、次のコマンドはテキストファイルtest(1).txtを開きます。

[email protected]:~/Downloads$ nano test\(1\).txt

それは今のところすべてです。私はすぐに別の興味深い記事を考え出します。それまでは、お楽しみに、健康で、テクミントとのつながりを保ちましょう。コメントセクションで貴重なフィードバックをお寄せください。