Introduzione
In questo articolo, ti spiegherò 6 operatori di concatenamento della riga di comando della shell Bash (operatore Linux). Ora discutiamo di cos'è l'operatore di concatenamento. L'operatore di concatenamento è qualcosa che aiuta a eseguire più comandi contemporaneamente come eseguiamo uno script e l'attività viene completata automaticamente. Di solito, le persone usano gli operatori di concatenamento della riga di comando della shell Bash (operatore Linux) negli script della shell, ma possiamo anche usare questi operatori sul prompt della shell.
Di seguito parleremo degli operatori di concatenamento della riga di comando della shell Bash (operatore Linux):
- &&Operatore (AND Operatore)
- OPPURE Operatore (||)
- Operatore AND &OR (&&e ||)
- Operatore TUBO (|)
- Operatore punto e virgola (;)
- Operatore e commerciale (&)
Ora discutiamo di ogni singolo Operatore uno per uno.
1. &&Operatore (AND Operatore)
La sintassi per utilizzare AND Operator è:
# command 1 && command 2
AND L'operatore eseguirà il secondo comando solo se il primo comando viene eseguito correttamente. Ora dai un'occhiata alla sintassi sopra. Qui il comando 2 verrà eseguito solo se il comando 1 viene eseguito correttamente. Ad esempio :
Qui come puoi vedere di seguito il primo comando è stato completato con successo, quindi il secondo comando df -h eseguito.
$ 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
Ora testiamo l'operatore AND in un modo diverso. Qui fallirò il primo comando e vedrò se il secondo comando viene eseguito o meno.
$ ping -c 5 local && df -h ping: unknown host local
Come puoi vedere sopra, il primo comando non è riuscito, quindi il secondo comando non viene eseguito.
2. O Operatore (||)
Nel nostro elenco, la riga di comando della seconda shell Bash Chaining Operators (operatore Linux) è OR Operator. La sintassi per utilizzare OR Operator è:
# command 1 || command 2
OR Operator è completamente opposto a &&Operator. OPPURE L'operatore eseguirà il secondo comando solo se il primo comando non riesce. Ora prendiamo un esempio :
$ 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
Come puoi vedere sopra, il secondo comando eseguito, ovvero "df -h" poiché il primo comando non riesce.
3. AND &OR Operatore (&&e ||)
La combinazione di &&Operator &OR Operator (||) è piuttosto interessante e ti darà un buon risultato se la usi correttamente. La combinazione di questi 2 operatori come l'istruzione if...else nella programmazione. Facciamo un esempio in modo da ottenere più Idea su questo :
Esempio:1
Qui ho provato a eseguire con successo il Primo comando e dopo un'esecuzione riuscita del primo comando, otterremo un messaggio Directory creata con successo.
$ mkdir data && echo "Directory created successfully" || echo "Directory creation failed" Directory created successfully
Come puoi vedere sopra, il nostro primo comando è stato eseguito correttamente, quindi siamo in grado di ottenere il messaggio richiesto.
Esempio:2
Qui ho provato a fallire il primo comando e dopo Fallito il primo comando riceveremo un messaggio Creazione utente non riuscita.
$ useradd helpdesk && echo "User created successfully" || echo "User creation failed" useradd: user 'helpdesk' already exists User creation failed
Come puoi vedere sopra, il nostro primo comando non è riuscito, quindi siamo in grado di ottenere il messaggio richiesto.
4. Operatore TUBO (|)
La quarta riga di comando della shell Bash Chaining Operators (operatore Linux) è PIPE Operator (|). PIPE è un tipo di operatore che può essere utilizzato per visualizzare l'output del primo comando prendendo l'input del secondo comando. Ad esempio, vuoi controllare tutti i processi di sistema attualmente in esecuzione usando il comando ps -ef. ma poiché l'elenco dei processi è così lungo che non può essere coperto in una schermata. In tal caso, puoi utilizzare Filter Operator con il comando more. Fare riferimento al comando seguente:
$ 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. Operatore punto e virgola (;)
La quinta riga di comando della shell Bash Chaining Operators (operatore Linux) è Punto e virgola Operator (;). Punto e virgola Operator esegue più comandi contemporaneamente in sequenza come è menzionato e fornisce output senza dipendere dal successo e dal fallimento di altri comandi come &&Operator e OR Operator (||). Dai un'occhiata all'esempio qui sotto:
$ 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. Operatore e commerciale (&)
Il sesto operatore di concatenamento della shell di Bash (operatore Linux) è l'operatore e commerciale (&). L'operatore e commerciale è un tipo di operatore che esegue determinati comandi in background. Puoi utilizzare questo operatore per eseguire più comandi contemporaneamente.
Il vantaggio di questo operatore è che non ti fa aspettare di usare il prompt della shell fino al completamento del comando dato. Ad esempio, esegui il ping su www.thegeekdiary.com con 50 pacchetti. come sai che ci vorrà del tempo per completare i 50 pacchetti. Senza usare Ampersand Operator devi aspettare che i 50 pacchetti vengano completati per eseguire un altro comando, ma usando questo operatore puoi usare il prompt della shell e il comando dato corrente, ovvero il ping verrà eseguito in background e questa è la bellezza di Ampersand Operator.
$ ping -c 50 localhost &
Puoi anche eseguire più comandi usando l'operatore e commerciale. Fare riferimento al comando seguente.
$ 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
Come puoi vedere sopra, l'output di entrambi i comandi arriva contemporaneamente.