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:
- &&-Operator (UND-Operator)
- ODER-Operator (||)
- UND &ODER Operator (&&und ||)
- PIPE-Operator (|)
- Semikolon-Operator (;)
- 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.