10 naudingų grandininių operatorių sistemoje „Linux“ su pavyzdžiais


„Linux“ komandų sujungimas reiškia kelių komandų sujungimą ir priverstinį jų vykdymą pagal tarp jų naudojamo operatoriaus elgseną.

Komandų sujungimas Linux sistemoje yra panašus į tai, kad rašote trumpus apvalkalo scenarijus pačiame apvalkale ir vykdote juos tiesiogiai iš terminalo. Sujungimas į grandinę leidžia automatizuoti procesą.

Be to, neprižiūrima mašina gali sistemingai veikti su grandinės operatorių pagalba.

Šiuo straipsniu siekiama išsiaiškinti dažnai naudojamus komandų grandinės operatorius. Jame pateikiami trumpi aprašymai ir atitinkami pavyzdžiai, kurie gali padidinti jūsų produktyvumą ir sudaryti sąlygas rašyti glaustą, prasmingą kodą, kartu sumažinant sistemos apkrovą.

1. Ampersand operatorius (&) – paleiskite Linux komandą fone

&“ funkcija yra priversti komandą vykdyti fone. Tiesiog įveskite komandą, po kurios palikite tarpą ir „&“. Galite vienu metu vykdyti daugiau nei vieną komandą fone.

Paleiskite vieną „Linux“ komandą, vadinamą „ping“ fone:

ping -­c5 linux-console.net &

Vykdykite dvi ar kelias apt komandas fone vienu metu:

apt update & apt upgrade &

2. Kabliataškis operatorius (;) – Vykdykite kelias komandas

Operatorius kabliataškis (;) leidžia paleisti kelias komandas vienu žingsniu ir komanda vykdoma nuosekliai.

apt update ; apt upgrade ; mkdir test

Aukščiau pateiktas komandų derinys pirmiausia įvykdys atnaujinimo, tada atnaujinimo ir galiausiai sukurs „bandymo“ katalogą dabartiniame darbiniame kataloge.

3. IR operatorius (&&) – sėkmingai paleiskite antrą komandą

IR operatorius (&&) vykdys antrąją komandą tik tuo atveju, jei pirmosios komandos vykdymas PASĖKSTA, t. y. išėjimo būsena pirmoji komanda yra 0. Ši komanda yra labai naudinga tikrinant paskutinės komandos vykdymo būseną.

Pavyzdžiui, noriu apsilankyti svetainėje linux-console.net terminale naudodamas komandą nuorodos, bet prieš tai turiu patikrinti, ar priegloba veikia tiesiogiai ar >ne.

ping -c3 linux-console.net && links linux-console.net

4. ARBA operatorius (||) – sąlyginis komandos vykdymas

ARBA operatorius (||) programuojant labai panašus į teiginį „else“. Operatorius || leidžia vykdyti antrąją komandą, tik jei nepavyksta įvykdyti pirmosios komandos, t. y. pirmosios komandos išėjimo būsena yra „1“.

Pavyzdžiui, noriu vykdyti „apt update“ iš ne root paskyros ir, jei pirmoji komanda nepavyksta, tada antroji komanda „links linux-console.net“ vykdys.

apt update || links linux-console.net

Aukščiau pateiktoje komandoje, kadangi naudotojui nebuvo leista atnaujinti sistemos, tai reiškia, kad pirmosios komandos išėjimo būsena yra 1 > ir todėl vykdoma paskutinė komanda „links linux-console.net“.

Ką daryti, jei pirmoji komanda sėkmingai vykdoma, o išėjimo būsena yra 0? Aišku! Antroji komanda nebus vykdoma.

mkdir test || links linux-console.net

Čia vartotojas savo namų kataloge sukuria aplanką „testas“, kurį vartotojui leidžiama naudoti. Komanda sėkmingai įvykdyta, suteikiant išėjimo būseną 0, todėl paskutinė komandos dalis nevykdoma.

5. NE operatorius (!) – pasirinktinis komandų vykdymas

NE operatorius (!) yra panašus į teiginį išskyrus. Ši komanda vykdys viską, išskyrus pateiktą sąlygą. Norėdami tai suprasti, pagrindiniame kataloge sukurkite katalogą „tecmint“ ir į jį „cd“.

mkdir tecmint 
cd tecmint

Tada aplanke „tecmint“ sukurkite kelių tipų failus.

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

Pamatykite, kad aplanke „tecmint“ sukūrėme visus naujus failus.

ls 

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

Dabar ištrinkite visus failus, išskyrus „html“ failą iš karto, sumaniai naudodami komandą rm.

rm -r !(*.html)

Tik patikrinti, paskutinis vykdymas. Išvardykite visus galimus failus naudodami komandą ls.

ls 

a.html  b.html

6. AND – ARBA operatorius (&& – ||) – sąlyginis komandų vykdymas

Anksčiau pateiktas operatorius yra „AND“ ir „OR“ operatoriaus derinys. Tai labai panašu į teiginį „jei-kitaip“.

Pavyzdžiui, atlikime ping į linux-console.net, jei sėkmė kartoja „Patvirtinta“, kitu atveju aidi „Host Down“.

ping -c3 linux-console.net && echo "Verified" || echo "Host Down"

Išvesties pavyzdys:

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

Dabar atjunkite interneto ryšį ir dar kartą bandykite tą pačią komandą.

ping -c3 linux-console.net && echo "verified" || echo "Host Down"

Išvesties pavyzdys:

ping: unknown host linux-console.net 
Host Down

7. VAMZDŽIO operatorius (|) – supaprastintas išvesties apdorojimas

Šis operatorius PIPE yra labai naudingas, kai pirmosios komandos išvestis veikia kaip antrosios komandos įvestis. Pavyzdžiui, suskirstykite išvestį „ls -l“ į „mažiau“ ir peržiūrėkite komandos išvestį.

ls -l | less

drwx------  tecmint tecmint  4.0 KB Thu Nov 16 12:03:02 2023 AnyDesk
drwxrwxr-x  tecmint tecmint  4.0 KB Tue Oct 10 10:44:35 2023 bin
drwxr-xr-x  root    root     4.0 KB Wed Nov 24 22:05:09 2021 DEBIAN
drwxrwxr-x  tecmint tecmint  4.0 KB Sat Nov 18 12:32:49 2023 Desktop
drwx--x---+ tecmint tecmint  100 KB Fri Dec  8 12:00:49 2023 Downloads
drwxrwxr-x  tecmint tecmint  4.0 KB Wed Sep 13 10:25:07 2023 llpp
drwxrwxr-x  tecmint tecmint  4.0 KB Thu Nov 16 14:26:46 2023 MyImages
drwxrwxr-x  tecmint tecmint  4.0 KB Wed Sep 13 14:55:42 2023 Obsidian Vault
drwxrwxr-x  tecmint tecmint  4.0 KB Tue Oct 10 10:44:32 2023 opt
drwxrwxr-x  tecmint tecmint  4.0 KB Thu Nov 16 14:46:54 2023 php
drwxrwxr-x  tecmint tecmint  4.0 KB Thu Nov 16 15:54:33 2023 tar_examples
.rw-rw-r--  tecmint tecmint   73 KB Mon Sep 18 11:46:02 2023 Apache-Web-Server-Security.png
.rw-rw-r--  tecmint tecmint  2.2 KB Sun Oct 29 00:17:15 2023 ChatGPT-SEO-Prompts
.rw-rw-r--  tecmint tecmint   41 KB Thu Nov 23 11:34:33 2023 Create-Users-in-Linux.png
...

8. Komandų derinio operatorius {}

Sujunkite dvi ar daugiau komandų, antroji komanda priklauso nuo pirmosios komandos vykdymo.

Pavyzdžiui, patikrinkite, ar katalogas „bin“ yra, ar ne, ir išveskite atitinkamą išvestį.

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

9. Pirmenybės operatorius() – valdymo komandų vykdymo įsakymas

Operatorius () leidžia vykdyti komandas pirmumo tvarka.

Command_x1 &&Command_x2 || Command_x3 && Command_x4.

Aukščiau pateiktoje pseudo komandoje, ką daryti, jei Command_x1 nepavyksta? Nebūtų vykdomas nė vienas iš Command_x2, Command_x3, Command_x4. Tam naudojame Precedence Operator, kaip:

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

Jei pirmiau pateiktoje pseudo komandoje Command_x1 nepavyksta, Command_x2 taip pat nepavyksta, bet vis tiek Command_x3 ir Command_x4 vykdomos atsižvelgiant į Command_x3 išėjimo būsena.

10. Sujungimo operatorius (\) – kelių eilučių komandų sujungimas

Sujungimo operatorius (\), kaip nurodo pavadinimas, naudojamas didelėms komandoms sujungti per kelias apvalkalo eilutes. Pavyzdžiui, toliau pateikta komanda atidarys tekstinį failą test(1).txt.

nano test\(1\).txt

Tai kol kas viskas. Labai greitai pateiksiu dar vieną įdomų straipsnį. Iki tol sekite naujienas, sveiki ir prisijunkite prie Tecmint. Nepamirškite pateikti savo vertingų atsiliepimų mūsų komentarų skiltyje.