GNU/Linux >> LINUX-Kenntnisse >  >> Linux

6 Verkettungsoperatoren für Bash-Shell-Befehlszeilen unter Linux

Einführung

In diesem Artikel erkläre ich Ihnen 6 Bash-Shell-Befehlszeilenverkettungsoperatoren (Linux-Operator). Lassen Sie uns nun besprechen, was der Verkettungsoperator ist. Der Verkettungsoperator hilft dabei, mehrere Befehle gleichzeitig auszuführen, als ob wir ein Skript ausführen und die Aufgabe automatisch abgeschlossen wird. Normalerweise verwenden Leute Bash-Shell-Befehlszeilen-Verkettungsoperatoren (Linux-Operator) beim Shell-Skripting, aber wir können diese Operatoren auch am Shell-Prompt verwenden.

Hier werden wir die folgenden Bash-Shell-Befehlszeilenverkettungsoperatoren (Linux-Operator) besprechen:

  1. &&-Operator (UND-Operator)
  2. ODER-Operator (||)
  3. UND &ODER Operator (&&und ||)
  4. PIPE-Operator (|)
  5. Semikolon-Operator (;)
  6. Ampersand-Operator (&)

Lassen Sie uns nun jeden einzelnen Operator einzeln besprechen.

1. &&-Operator (UND-Operator)

Die Syntax zur Verwendung des UND-Operators lautet:

# command 1 && command 2

Der UND-Operator führt den zweiten Befehl nur aus, wenn der erste Befehl erfolgreich ausgeführt wird. Schauen Sie sich nun die obige Syntax an. Hier wird Befehl 2 nur ausgeführt, wenn Befehl 1 erfolgreich ausgeführt wird. Zum Beispiel:

Hier, wie Sie unten sehen können, wurde der erste Befehl erfolgreich abgeschlossen, daher wurde der zweite Befehl df -h ausgeführt.

$ ping -c 5 localhost && df -h
PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.067 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.086 ms
64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.085 ms
64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.081 ms
64 bytes from localhost (127.0.0.1): icmp_seq=5 ttl=64 time=0.086 ms

--- localhost ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4100ms
rtt min/avg/max/mdev = 0.067/0.081/0.086/0.007 ms
Filesystem      Size  Used Avail Use% Mounted on
udev            966M     0  966M   0% /dev
tmpfs           199M   12M  187M   6% /run
/dev/sda1        18G  5.3G   12G  32% /
tmpfs           992M  212K  992M   1% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           992M     0  992M   0% /sys/fs/cgroup
tmpfs           199M   60K  199M   1% /run/user/1000

Lassen Sie uns nun den UND-Operator auf andere Weise testen. Hier lasse ich den ersten Befehl fehlschlagen und sehen, ob der zweite Befehl ausgeführt wird oder nicht.

$ ping -c 5 local && df -h
ping: unknown host local

Wie Sie oben sehen können, ist der erste Befehl fehlgeschlagen, daher wird der zweite Befehl nicht ausgeführt.

2. ODER-Operator (||)

Auf unserer Liste ist der Zweite Bash-Shell-Befehlszeilenverkettungsoperator (Linux-Operator) OR-Operator. Die Syntax zur Verwendung des OR-Operators lautet:

# command 1 || command 2

Der ODER-Operator ist das komplette Gegenteil des &&-Operators. Der ODER-Operator führt den zweiten Befehl nur aus, wenn der erste Befehl fehlschlägt. Nehmen wir nun ein Beispiel:

$ ping -c 5 local || df -h
ping: unknown host local
Filesystem      Size  Used Avail Use% Mounted on
udev            966M     0  966M   0% /dev
tmpfs           199M   12M  187M   6% /run
/dev/sda1        18G  5.3G   12G  32% /
tmpfs           992M  212K  992M   1% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           992M     0  992M   0% /sys/fs/cgroup
tmpfs           199M   60K  199M   1% /run/user/1000

Wie Sie oben sehen können, wurde der zweite Befehl ausgeführt, d. h. „df -h“, da der erste Befehl fehlgeschlagen ist.

3. AND &OR-Operator (&&und ||)

Die Kombination von &&Operator &OR Operator (||) ist ziemlich interessant und wird Ihnen eine schöne Ausgabe geben, wenn Sie sie richtig verwenden. Die Kombination dieser beiden Operatoren ist wie die if…else-Anweisung in der Programmierung. Nehmen wir ein Beispiel, damit Sie mehr darüber erfahren:

Beispiel:1

Hier habe ich versucht, den ersten Befehl erfolgreich auszuführen, und nach einer erfolgreichen Ausführung des ersten Befehls erhalten wir eine Meldung Verzeichnis erfolgreich erstellt.

$ mkdir data && echo "Directory created successfully" || echo "Directory creation failed"
Directory created successfully

Wie Sie oben sehen können, wurde unser erster Befehl erfolgreich ausgeführt, daher können wir die erforderliche Nachricht erhalten.

Beispiel:2

Hier habe ich versucht, den ersten Befehl fehlgeschlagen, und nach dem Fehlschlagen des ersten Befehls erhalten wir eine Meldung Benutzererstellung fehlgeschlagen.

$ useradd helpdesk  && echo "User created successfully" || echo "User creation failed"
useradd: user 'helpdesk' already exists
User creation failed

Wie Sie oben sehen können, ist unser erster Befehl fehlgeschlagen, daher können wir die erforderliche Nachricht erhalten.

4. PIPE-Operator (|)

Der vierte Bash-Shell-Befehlszeilenverkettungsoperator (Linux-Operator) ist der PIPE-Operator (|). PIPE ist eine Art Operator, der verwendet werden kann, um die Ausgabe des ersten Befehls anzuzeigen, indem die Eingabe für den zweiten Befehl übernommen wird. Sie möchten beispielsweise alle derzeit laufenden Systemprozesse mit dem Befehl ps -ef überprüfen. aber da die Prozessliste so lang ist, dass sie nicht in einem Bildschirm abgedeckt werden kann. In diesem Fall können Sie den Filteroperator mit dem Befehl more verwenden. Siehe den folgenden Befehl:

$ ps -ef | more
  UID   PID  PPID   C STIME   TTY           TIME CMD
    0     1     0   0 19Oct18 ??        28:26.69 /sbin/launchd
    0    47     1   0 19Oct18 ??         0:39.18 /usr/sbin/syslogd
    0    48     1   0 19Oct18 ??         0:18.18 /usr/libexec/UserEventAgent (System)
    0    51     1   0 19Oct18 ??         0:15.91 /System/Library/PrivateFrameworks/Uninstall.framework/Resources/uninstalld
    0    52     1   0 19Oct18 ??         0:34.08 /usr/libexec/kextd
    0    53     1   0 19Oct18 ??         4:35.44 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/Support/fseventsd
   55    58     1   0 19Oct18 ??         0:02.25 /System/Library/CoreServices/appleeventsd --server
    0    59     1   0 19Oct18 ??        11:23.76 /usr/sbin/systemstats --daemon
    0    61     1   0 19Oct18 ??         0:40.65 /usr/libexec/configd
    0    62     1   0 19Oct18 ??         6:05.79 /System/Library/CoreServices/powerd.bundle/powerd
    0    63     1   0 19Oct18 ??         1:16.99 /Library/PrivilegedHelperTools/com.80pct.FreedomHelper
    0    67     1   0 19Oct18 ??         3:01.31 /usr/libexec/logd
...

5. Semikolon-Operator (;)

Fünfte Bash-Shell-Befehlszeile Verkettungsoperatoren (Linux-Operator) ist Semikolon-Operator (;). Der Semikolon-Operator führt mehrere Befehle gleichzeitig nacheinander aus, wie erwähnt, und liefert die Ausgabe, ohne vom Erfolg und Misserfolg anderer Befehle wie dem &&-Operator und dem ODER-Operator (||) abhängig zu sein. Sehen Sie sich das folgende Beispiel an:

$ ping -c 5 localhost ; ifconfig ens33 ; df -h
PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.063 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.091 ms
64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.085 ms
64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.086 ms
64 bytes from localhost (127.0.0.1): icmp_seq=5 ttl=64 time=0.086 ms

--- localhost ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4091ms
rtt min/avg/max/mdev = 0.063/0.082/0.091/0.011 ms
ens33     Link encap:Ethernet  HWaddr 00:0c:29:ff:cd:2e  
          inet addr:192.168.43.185  Bcast:192.168.43.255  Mask:255.255.255.0
          inet6 addr: 2405:204:f017:75dd:65af:f027:85c2:88eb/64 Scope:Global
          inet6 addr: 2405:204:f017:75dd:f076:72b8:fd36:757f/64 Scope:Global
          inet6 addr: fe80::b396:d285:b5b3:81c3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:146608 errors:0 dropped:0 overruns:0 frame:0
          TX packets:78275 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:188124508 (188.1 MB)  TX bytes:6912561 (6.9 MB)

Filesystem      Size  Used Avail Use% Mounted on
udev            966M     0  966M   0% /dev
tmpfs           199M   12M  187M   6% /run
/dev/sda1        18G  5.3G   12G  32% /
tmpfs           992M  212K  992M   1% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           992M     0  992M   0% /sys/fs/cgroup
tmpfs           199M   60K  199M   1% /run/user/1000

6. Kaufmännisches Und-Operator (&)

Sechster Bash-Shell-Befehlszeilen-Verkettungsoperator (Linux-Operator) ist der kaufmännische Und-Operator (&). Der kaufmännische Und-Operator ist eine Art Operator, der bestimmte Befehle im Hintergrund ausführt. Sie können diesen Operator verwenden, um mehrere Befehle gleichzeitig auszuführen.

Der Vorteil dieses Operators besteht darin, dass Sie mit der Verwendung des Shell-Prompts nicht warten müssen, bis der angegebene Befehl abgeschlossen ist. Sie pingen beispielsweise www.thegeekdiary.com mit 50 Paketen an. wie Sie wissen, wird es einige Zeit dauern, bis die 50 Pakete fertig sind. Ohne den kaufmännischen Und-Operator müssen Sie warten, bis die 50 Pakete abgeschlossen sind, um einen weiteren Befehl auszuführen, aber mit diesem Operator können Sie die Shell-Eingabeaufforderung und den aktuell angegebenen Befehl verwenden, dh Ping wird im Hintergrund ausgeführt, und das ist das Schöne am kaufmännischen Und-Operator.

$ ping -c 50 localhost &

Sie können auch mehrere Befehle mit dem kaufmännischen Und-Operator ausführen. Siehe folgenden Befehl.

$ ping -c 5 localhost & df -h &
[1] 25962
[2] 25963

$ PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.052 ms

Filesystem      Size  Used Avail Use% Mounted on
udev            966M     0  966M   0% /dev
tmpfs           199M   12M  187M   6% /run
/dev/sda1        18G  5.3G   12G  32% /
tmpfs           992M  212K  992M   1% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           992M     0  992M   0% /sys/fs/cgroup
tmpfs           199M   56K  199M   1% /run/user/1000

64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.091 ms
64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.070 ms
64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.091 ms
64 bytes from localhost (127.0.0.1): icmp_seq=5 ttl=64 time=0.117 ms

--- localhost ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4072ms
rtt min/avg/max/mdev = 0.052/0.084/0.117/0.022 ms

Wie Sie oben sehen können, kommt die Ausgabe beider Befehle gleichzeitig.


Linux
  1. So löschen Sie den BASH-Befehlszeilenverlauf in Linux

  2. 5 Standardvervollständigung Verfügbar in der Linux Bash-Befehlszeile

  3. So konfigurieren Sie eine eingeschränkte Bash-Shell unter Linux

  4. [ :Unerwarteter Operator in der Shell-Programmierung

  5. Funktion in der Unix/Linux-Befehlszeile definieren (z. B. BASH)

Quellbefehl unter Linux

Meistern Sie die Linux-Befehlszeile

Quellbefehl unter Linux

Grundlagen der Linux-Befehlszeile:sudo

So verwenden Sie den Declare-Befehl in der Linux Bash Shell

Quellbefehl unter Linux erklärt