10 uporabnih verižnih operaterjev v Linuxu s praktičnimi primeri


Veriženje ukazov Linuxa pomeni kombiniranje več ukazov in njihovo izvajanje na podlagi vedenja uporabljenega operaterja med njimi. Veriženje ukazov v Linuxu je nekaj takega, kot da v samo lupino pišete kratke skripte lupine in jih neposredno izvajate s terminala. Veriženje omogoča avtomatizacijo postopka. Poleg tega lahko brez nadzora stroj deluje sistematično s pomočjo veriženja operaterjev.

Ta članek želi osvetliti pogosto uporabljene operaterje veriženja ukazov s kratkimi opisi in ustreznimi primeri, ki bodo zagotovo povečali vašo produktivnost in vam omogočajo, da občasno napišete kratke in smiselne kode poleg zmanjšanja obremenitve sistema.

1. Operater ampersanda (&)

Funkcija '&' je, da se ukaz izvaja v ozadju. Preprosto vnesite ukaz, ki mu sledi presledek, in '&'. Z enim potezom lahko v ozadju izvedete več kot en ukaz.

V ozadju zaženite en ukaz:

[email :~$ ping ­c5 linux-console.net &

V ozadju zaženite dva ukaza hkrati:

[email :/home/tecmint# apt-get update & apt-get upgrade &

2. operator s podpičjem (;)

Operator s podpičjem omogoča zagon, več ukazov naenkrat in izvajanje ukaza poteka zaporedno.

[email :/home/tecmint# apt-get update ; apt-get upgrade ; mkdir test

Zgornja kombinacija ukazov bo najprej izvedla navodila za posodobitev, nato navodila za nadgradnjo in na koncu ustvarila "testni" imenik pod trenutnim delovnim imenikom.

3. IN Operator (&&)

Operator AND (&&) bi izvršil drugi ukaz le, če je izvedba prvega ukaza USPEŠNA, tj. Stanje izhoda prvega ukaza je 0. Ta ukaz je zelo koristen pri preverjanju stanja izvrševanja zadnjega ukaza.

Na primer, želim obiskati spletno stran linux-console.net z ukazom links v terminalu, vendar pred tem moram preveriti, ali je gostitelj v živo ali ne.

[email :/home/tecmint# ping -c3 linux-console.net && links linux-console.net

4. ALI operater (||)

Operator OR (||) je podoben stavku "else" pri programiranju. Zgornji operater vam omogoča izvajanje drugega ukaza le, če izvajanje prvega ukaza ne uspe, tj. Stanje izhoda prvega ukaza je '1'.

Na primer, želim izvesti »apt-get update« iz nekorenskega računa in če prvi ukaz ne uspe, se izvede drugi ukaz »links linux-console.net«.

[email :~$ apt-get update || links linux-console.net

Ker v zgornjem ukazu uporabnik ni smel posodabljati sistema, pomeni, da je izhodni status prvega ukaza ‘1’ in se zato izvede zadnji ukaz ‘links linux-console.net’.

Kaj pa, če je prvi ukaz uspešno izveden s statusom izhoda '0'? Očitno! Drugi ukaz se ne bo izvedel.

[email :~$ mkdir test || links linux-console.net

Tu uporabnik v svojem domačem imeniku ustvari mapo 'test', za katero je uporabnik dovoljen. Ukaz je bil uspešno izveden s statusom izhoda '0', zato se zadnji del ukaza ne izvrši.

5. NE operater (!)

Operator NOT (!) Je podoben stavku "razen". Ta ukaz bo izvedel vse, razen predvidenega pogoja. Če želite to razumeti, v domačem imeniku ustvarite imenik "tecmint" in vanj "cd".

[email :~$ mkdir tecmint 
[email :~$ cd tecmint

Nato v mapi „tecmint“ ustvarite več vrst datotek.

[email :~/tecmint$ touch a.doc b.doc a.pdf b.pdf a.xml b.xml a.html b.html

Glejte, vse nove datoteke smo ustvarili v mapi 'tecmint'.

[email :~/tecmint$ ls 

a.doc  a.html  a.pdf  a.xml  b.doc  b.html  b.pdf  b.xml

Zdaj na pameten način izbrišite vse datoteke, razen datoteke »html«.

[email :~/tecmint$ rm -r !(*.html)

Samo za preverjanje, zadnja izvedba. Z ukazom ls naštejte vse razpoložljive datoteke.

[email :~/tecmint$ ls 

a.html  b.html

6. IN - ALI operator (&& - ||)

Zgornji operater je dejansko kombinacija operaterja 'AND' in 'OR'. To je podobno izjavi "če-drugače".

Na primer, naredimo ping na linux-console.net, če uspeh odmeva 'Verified' else 'echo' Host Down '.

[email :~/tecmint$ ping -c3 linux-console.net && echo "Verified" || echo "Host Down"
PING linux-console.net (212.71.234.61) 56(84) bytes of data. 
64 bytes from linux-console.net (212.71.234.61): icmp_req=1 ttl=55 time=216 ms 
64 bytes from linux-console.net (212.71.234.61): icmp_req=2 ttl=55 time=224 ms 
64 bytes from linux-console.net (212.71.234.61): icmp_req=3 ttl=55 time=226 ms 

--- linux-console.net ping statistics --- 
3 packets transmitted, 3 received, 0% packet loss, time 2001ms 
rtt min/avg/max/mdev = 216.960/222.789/226.423/4.199 ms 
Verified

Zdaj odklopite internetno povezavo in poskusite znova isti ukaz.

[email :~/tecmint$ ping -c3 linux-console.net && echo "verified" || echo "Host Down"
ping: unknown host linux-console.net 
Host Down

7. Operator cevovodov (|)

Ta operater PIPE je zelo koristen, kadar izhod prvega ukaza deluje kot vhod za drugi ukaz. Na primer, preslikajte izhodne vrednosti 'ls -l' v 'manj' in si oglejte izhodne podatke ukaza.

[email :~$ ls -l | less

8. Operater kombinacije ukazov {}

Združite dva ali več ukazov, drugi ukaz je odvisen od izvajanja prvega ukaza.

Na primer, preverite, ali je na voljo imenik „bin“ ali ne, in iznesite ustrezen izhod.

[email :~$ [ -d bin ] || { echo Directory does not exist, creating directory now.; mkdir bin; } && echo Directory exists.

9. Prednostni operater()

Operater omogoča izvajanje ukaza v prednostnem vrstnem redu.

Command_x1 &&Command_x2 || Command_x3 && Command_x4.

Kaj v zgornjem psevdo ukazu, kaj če Command_x1 ne uspe? Noben od Command_x2, Command_x3, Command_x4 se ne bi izvedel, zato uporabljamo Precedence Operator kot:

(Command_x1 &&Command_x2) || (Command_x3 && Command_x4)

Če v zgornjem psevdo ukazu ne uspe Command_x1, Command_x2 prav tako ne uspe, kljub temu pa se Command_x3 in Command_x4 izvrši, odvisno od stanja izhoda Command_x3.

10. Operater združevanja (\)

Operater povezovanja (\), kot določa ime, se uporablja za združevanje velikih ukazov v več vrstic v lupini. Na primer, spodnji ukaz odpre besedilno datoteko test (1) .txt.

[email :~/Downloads$ nano test\(1\).txt

To je vse za zdaj. Kmalu pripravim še en zanimiv članek. Do takrat ostanite z nami, zdravi in povezani s Tecmintom. Ne pozabite dati dragocenih povratnih informacij v našem oddelku za komentarje.