GNU/Linux >> Linux Esercitazione >  >> Linux

6 Operatori di concatenamento della riga di comando della shell Bash in Linux

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):

  1. &&Operatore (AND Operatore)
  2. OPPURE Operatore (||)
  3. Operatore AND &OR (&&e ||)
  4. Operatore TUBO (|)
  5. Operatore punto e virgola (;)
  6. 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.


Linux
  1. Come cancellare la cronologia della riga di comando BASH in Linux

  2. Alias ​​della riga di comando nella shell di Linux

  3. 5 Completamento standard disponibile nella riga di comando di Linux Bash

  4. Come configurare la shell Bash con restrizioni in Linux

  5. Come utilizzare le funzioni della shell della riga di comando in Linux

Comando sorgente in Linux

Padroneggia la riga di comando di Linux

Comando sorgente in Linux

Nozioni di base sulla riga di comando di Linux:sudo

Come utilizzare il comando Declare in Linux Bash Shell

Spiegazione del comando sorgente su Linux