GNU/Linux >> Znalost Linux >  >> Linux

6 Operátorů řetězení příkazového řádku Bash Shell v Linuxu

Úvod

V tomto článku vám vysvětlím 6 řetězových operátorů příkazového řádku Bash Shell (Linuxový operátor). Nyní pojďme diskutovat o tom, co je operátor řetězení. Operátor řetězení je něco, co pomáhá spouštět více příkazů najednou, jako když spustíme skript a úloha se dokončí automaticky. Lidé obvykle používají při skriptování shellu příkazové řádky Bash Shell Chaining Operators (Linuxový operátor), ale také můžeme tyto operátory použít na příkazovém řádku shellu.

Zde budeme diskutovat níže o příkazovém řádku Bash shellu Chaining Operators (operátor Linuxu):

  1. Operátor &&(operátor AND)
  2. Operátor NEBO (||)
  3. Operátor AND &OR (&&a ||)
  4. Operátor potrubí (|)
  5. Operátor středník (;)
  6. Operátor ampersand (&)

Nyní si proberme každého jednoho operátora jeden po druhém.

1. Operátor &&(operátor AND)

Syntaxe pro použití operátoru AND je :

# command 1 && command 2

Operátor AND provede druhý příkaz pouze v případě, že se první příkaz provede úspěšně. Nyní se podívejte na syntaxi výše. Zde se příkaz 2 provede pouze v případě, že se příkaz 1 provede úspěšně. Například:

Jak vidíte níže, první příkaz byl úspěšně dokončen, a proto byl proveden druhý příkaz df -h.

$ 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

Nyní otestujeme operátor AND jiným způsobem. Zde selžu první příkaz a uvidím, zda se druhý příkaz provede nebo ne.

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

Jak můžete vidět výše, první příkaz selhal, takže druhý příkaz nebyl proveden.

2. Operátor OR (||)

V našem seznamu je druhý Bash shell příkazového řádku Chaining Operators (Linuxový operátor) operátor OR. Syntaxe pro použití operátoru OR je :

# command 1 || command 2

Operátor OR je úplný opak operátora &&. Operátor OR provede druhý příkaz pouze v případě, že první příkaz selže. Nyní si vezměme příklad :

$ 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

Jak můžete vidět výše, druhý příkaz byl proveden, tj. „df -h“, protože první příkaz selhal.

3. AND &OR operátor (&&a ||)

Kombinace &&Operator &OR Operator (||) je docela zajímavá a při správném použití vám poskytne pěkný výstup. Kombinace těchto 2 operátorů jako příkaz if...else v programování. Vezměme si příklad, abyste o tom získali více nápadů:

Příklad:1

Zde jsem se pokusil o úspěch prvního příkazu a po úspěšném provedení prvního příkazu se nám zobrazí zpráva Adresář byl úspěšně vytvořen.

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

Jak můžete vidět výše, náš první příkaz byl úspěšně proveden, takže jsme schopni získat požadovanou zprávu.

Příklad:2

Zde jsem se pokusil o selhání prvního příkazu a po selhání prvního příkazu se zobrazí zpráva Vytvoření uživatele se nezdařilo.

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

Jak můžete vidět výše, náš první příkaz selhal, takže jsme schopni získat požadovanou zprávu.

4. Operátor PIPE (|)

Čtvrtý Bash shell příkazového řádku Chaining Operators (Linuxový operátor) je PIPE Operator (|). PIPE je druh operátoru, který lze použít k zobrazení výstupu prvního příkazu převzetím vstupu druhého příkazu. Například chcete zkontrolovat všechny aktuálně spuštěné systémové procesy pomocí příkazu ps -ef. ale protože seznam procesů je tak dlouhý, že jej nelze pokrýt na jedné obrazovce. V takovém případě můžete použít Operátor filtru s příkazem more. Viz příkaz níže:

$ 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. Středník operátor (;)

Pátý Bash shell příkazový řádek Chaining Operators (Linuxový operátor) je středník operátor (;). Středník operátor provádí více příkazů najednou postupně, jak je zmíněno, a poskytuje výstup bez závislosti na úspěchu a neúspěchu jiných příkazů, jako je operátor &&a operátor OR (||). Podívejte se na příklad níže:

$ 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. Operátor ampersand (&)

Šestý operátor příkazového řádku Bash shellu Chaining Operator (operátor Linuxu) je operátor Ampersand (&). Ampersand Operator je druh operátora, který provádí zadané příkazy na pozadí. Tento operátor můžete použít k provádění více příkazů najednou.

Výhodou tohoto operátoru je, že vás nenechá čekat s použitím příkazového řádku, dokud nebude daný příkaz dokončen. Například pingnete na www.thegeekdiary.com s 50 pakety. jak víte, že dokončení 50 paketů bude nějakou dobu trvat. Bez použití Ampersand Operator musíte počkat na dokončení 50 paketů, abyste mohli spustit další příkaz, ale pomocí tohoto operátoru můžete použít shell prompt a aktuálně daný příkaz, tj. ping poběží na pozadí a to je krása Ampersand Operator.

$ ping -c 50 localhost &

Pomocí operátoru Ampersand můžete také provádět více příkazů. Viz příkaz níže.

$ 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

Jak můžete vidět výše, výstup obou příkazů přichází současně.


Linux
  1. Jak používat funkce shellu příkazového řádku v Linuxu

  2. Pochopení proměnných v Bash Shell pod Linuxem

  3. [ :Neočekávaný operátor v programování shellu

  1. Jak vymazat historii příkazového řádku BASH v Linuxu

  2. Aliasy příkazového řádku v prostředí Linux

  3. Bash, pokud na jednom řádku

  1. 5 Standardní dokončení K dispozici v příkazovém řádku Linux Bash

  2. Jak nakonfigurovat omezený Bash Shell v Linuxu

  3. Příklady příkazů chsh v Linuxu