ウェブサイト検索

Linux の 10 の便利な連鎖演算子と例


Linux コマンドのチェーン化とは、複数のコマンドを組み合わせ、それらの間で使用されるオペレーターの動作に基づいて実行することを意味します。

Linux におけるコマンドの連鎖は、シェル自体で短いシェル スクリプトを作成し、ターミナルから直接実行するようなものです。チェーン化によりプロセスを自動化できます。

さらに、無人マシンは、オペレーターを連鎖させることで体系的に機能することができます。

この記事は、頻繁に使用されるコマンド連鎖演算子に光を当てることを目的としています。短い説明と対応する例が提供されているため、生産性が向上し、システム負荷を軽減しながら簡潔で意味のあるコードを作成できるようになります。

1. アンパサンド演算子 (&) – Linux コマンドをバックグラウンドで実行します

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

「ping」という単一の Linux コマンドをバックグラウンドで実行します。

ping -­c5 linux-console.net &

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

apt update & apt upgrade &

2. セミコロン演算子 (;) – 複数のコマンドを実行します

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

apt update ; apt upgrade ; mkdir test

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

3. AND 演算子 (&&) – 成功したら 2 番目のコマンドを実行します

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

たとえば、ターミナルで links コマンドを使用して Web サイト linux-console.net にアクセスしたいのですが、その前に、 ホストがライブであるか確認する必要があります。 > ないです。

ping -c3 linux-console.net && links linux-console.net

4. OR 演算子 (||) – 条件付きコマンドの実行

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

たとえば、root 以外のアカウントから「apt update」を実行したいと考えています。最初のコマンドが失敗した場合、2 番目の「links linux-console.net」コマンドを実行します。実行します。

apt update || links linux-console.net

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

最初のコマンドが正常に実行され、終了ステータス '0 ' が返された場合はどうなるでしょうか?明らかに! 2 番目のコマンドは実行されません。

mkdir test || links linux-console.net

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

5. NOT 演算子 (!) – コマンドの選択的実行

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

mkdir tecmint 
cd tecmint

次に、フォルダー「tecmint」に数種類のファイルを作成します。

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

すべての新しいファイルがフォルダー「tecmint」内に作成されたことがわかります。

ls 

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

次に、rm コマンドを使用して、「html」ファイルを除くすべてのファイルを一度に削除します。

rm -r !(*.html)

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

ls 

a.html  b.html

6. AND – OR 演算子 (&& – ||) – コマンドの条件付き実行

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

たとえば、linux-console.net に ping を実行してみましょう。成功した場合は「確認済み」、それ以外の場合は「ホスト ダウン」がエコーされます。

ping -c3 linux-console.net && echo "Verified" || echo "Host Down"

サンプル出力:

PING linux-console.net (212.71.234.61) 56(84) bytes of data. 
64 bytes from linux-console.net (212.71.234.61): icmp_req=1 ttl=55 time=216 ms 
64 bytes from linux-console.net (212.71.234.61): icmp_req=2 ttl=55 time=224 ms 
64 bytes from linux-console.net (212.71.234.61): icmp_req=3 ttl=55 time=226 ms 

--- linux-console.net 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

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

ping -c3 linux-console.net && echo "verified" || echo "Host Down"

サンプル出力:

ping: unknown host linux-console.net 
Host Down

7. PIPE 演算子 (|) – 合理化された出力処理

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

ls -l | less

drwx------  tecmint tecmint  4.0 KB Thu Nov 16 12:03:02 2023 AnyDesk
drwxrwxr-x  tecmint tecmint  4.0 KB Tue Oct 10 10:44:35 2023 bin
drwxr-xr-x  root    root     4.0 KB Wed Nov 24 22:05:09 2021 DEBIAN
drwxrwxr-x  tecmint tecmint  4.0 KB Sat Nov 18 12:32:49 2023 Desktop
drwx--x---+ tecmint tecmint  100 KB Fri Dec  8 12:00:49 2023 Downloads
drwxrwxr-x  tecmint tecmint  4.0 KB Wed Sep 13 10:25:07 2023 llpp
drwxrwxr-x  tecmint tecmint  4.0 KB Thu Nov 16 14:26:46 2023 MyImages
drwxrwxr-x  tecmint tecmint  4.0 KB Wed Sep 13 14:55:42 2023 Obsidian Vault
drwxrwxr-x  tecmint tecmint  4.0 KB Tue Oct 10 10:44:32 2023 opt
drwxrwxr-x  tecmint tecmint  4.0 KB Thu Nov 16 14:46:54 2023 php
drwxrwxr-x  tecmint tecmint  4.0 KB Thu Nov 16 15:54:33 2023 tar_examples
.rw-rw-r--  tecmint tecmint   73 KB Mon Sep 18 11:46:02 2023 Apache-Web-Server-Security.png
.rw-rw-r--  tecmint tecmint  2.2 KB Sun Oct 29 00:17:15 2023 ChatGPT-SEO-Prompts
.rw-rw-r--  tecmint tecmint   41 KB Thu Nov 23 11:34:33 2023 Create-Users-in-Linux.png
...

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

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

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

[ -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_x2Command_x3Command_x4はいずれも実行されません。このために、次のように優先演算子を使用します。

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

上記の疑似コマンドでは、Command_x1 が失敗すると Command_x2 も失敗しますが、それでも Command_x3Command_x4 は、 Command_x3 の終了ステータス。

10. 連結演算子 (\) – 複数行のコマンド連結

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

nano test\(1\).txt

それは今のところすべてです。もうすぐ別の興味深い記事を思いつく予定です。それまでは、健康に気をつけて、Tecmint とつながってください。コメントセクションに貴重なフィードバックをお寄せいただくことを忘れないでください。