10 noderīgi ķēdes operatori Linux ar praktiskiem piemēriem


Linux komandu ķēde nozīmē apvienot vairākas komandas un likt tām izpildīt, pamatojoties uz operatora uzvedību, kas tiek izmantota starp tām. Komandu ķēde Linux operētājsistēmā ir kaut kas līdzīgs tam, ka jūs rakstāt īsus čaulas skriptus pašā čaulā un izpildāt tos tieši no termināla. Ķēdes ļauj procesu automatizēt. Turklāt bez uzraudzības mašīna var darboties daudz sistemātiski, izmantojot ķēdes operatorus.

Šī raksta mērķis ir pievērst uzmanību bieži izmantotajiem komandu ķēdes operatoriem ar īsiem aprakstiem un atbilstošiem piemēriem, kas noteikti palielinās jūsu produktivitāti un ļauj reizēm rakstīt īsus un jēgpilnus kodus, vienlaikus samazinot sistēmas slodzi.

1. Ampersanda operators (&)

‘&’ Funkcija ir panākt, lai komanda darbotos fonā. Vienkārši ierakstiet komandu, kurai seko atstarpe un ‘&’. Fonā vienā piegājienā varat izpildīt vairākas komandas.

Palaidiet vienu komandu fonā:

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

Vienlaicīgi izpildiet divas komandas fonā:

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

2. pults kols Operators (;)

Semikola operators ļauj palaist, vairākas komandas vienā piegājienā un komandas izpilde notiek secīgi.

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

Iepriekš minētā komandu kombinācija vispirms izpildīs atjaunināšanas instrukcijas, pēc tam jaunināšanas instrukcijas un visbeidzot izveidos direktoriju “test” zem pašreizējā darba direktorija.

3. UN Operators (&&)

Operators AND (&&) izpildītu otro komandu tikai tad, ja pirmās komandas SUCCEEDS izpilde, t.i., pirmās komandas izejas statuss ir 0. Šī komanda ir ļoti noderīga, pārbaudot pēdējās komandas izpildes statusu.

Piemēram, es vēlos apmeklēt vietni linux-console.net, izmantojot komandu saites, terminālā, bet pirms tam man jāpārbauda, vai resursdators darbojas vai nē.

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

4. VAI operators (||)

OR operators (||) ir līdzīgs ‘cits’ apgalvojumam programmēšanā. Iepriekš minētais operators ļauj izpildīt otro komandu tikai tad, ja pirmās komandas izpilde neizdodas, t.i., pirmās komandas izejas statuss ir ‘1’.

Piemēram, es vēlos izpildīt ‘apt-get update’ no konta, kas nav root, un, ja pirmā komanda neizdodas, tad izpildīs otro komandu ‘links linux-console.net’.

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

Iepriekš minētajā komandā, tā kā lietotājam nebija atļauts atjaunināt sistēmu, tas nozīmē, ka pirmās komandas izejas statuss ir “1”, un tādējādi tiek izpildīta pēdējā komanda “links linux-console.net”.

Ko darīt, ja pirmā komanda tiek veiksmīgi izpildīta ar izejas statusu “0”? Skaidrs! Otrā komanda netiks izpildīta.

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

Šeit lietotājs savā mājas direktorijā izveido mapi ‘test’, kurai lietotājs ir atļauts. Komanda ir veiksmīgi izpildīta, dodot izejas statusu “0”, un tāpēc komandas pēdējā daļa netiek izpildīta.

5. NAV operators (!)

NOT operators (!) Ir līdzīgs apgalvojumam ‘izņemot’. Šī komanda izpildīs visus, izņemot norādīto nosacījumu. Lai to saprastu, izveidojiet direktoriju ‘tecmint’ mājas direktorijā un ‘cd’ tam.

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

Pēc tam izveidojiet vairāku veidu failus mapē ‘tecmint’.

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

Skatiet, ka esam izveidojuši visus jaunos failus mapē “tecmint”.

[email :~/tecmint$ ls 

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

Tagad viedā veidā izdzēsiet visus failus, izņemot ‘html’, vienlaikus.

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

Tikai, lai pārbaudītu, pēdējā izpilde. Uzskaitiet visus pieejamos failus, izmantojot komandu ls.

[email :~/tecmint$ ls 

a.html  b.html

6. UN - VAI operators (&& - ||)

Iepriekš minētais operators faktiski ir operatora “AND” un “OR” kombinācija. Tas ir līdzīgs apgalvojumam “ja-citādi”.

Piemēram, darīsim ping uz vietni linux-console.net, ja veiksme atbalsojas ‘Verified’, citādi atbalsojas ‘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

Tagad atvienojiet interneta savienojumu un mēģiniet vēlreiz to pašu komandu.

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

7. PIPE operators (|)

Šis PIPE operators ir ļoti noderīgs, ja pirmās komandas izvade darbojas kā ievade otrajai komandai. Piemēram, cauruļvadā ‘ls -l’ izvadi uz ‘mazāk’ un skatiet komandas izvadi.

[email :~$ ls -l | less

8. Komandu kombinācijas operators {}

Apvienojiet divas vai vairākas komandas, otrā komanda ir atkarīga no pirmās komandas izpildes.

Piemēram, pārbaudiet, vai direktorijs ‘bin’ ir pieejams vai nav, un izvadiet atbilstošo izvadi.

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

9. Pārākuma operators()

Operators ļauj izpildīt komandu prioritārā secībā.

Command_x1 &&Command_x2 || Command_x3 && Command_x4.

Kas notiek iepriekšminētajā pseido komandā, ja neizdodas Command_x1? Neviens no Command_x2, Command_x3, Command_x4 netiktu izpildīts, šim nolūkam mēs izmantojam Preedence Operator kā:

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

Iepriekš komandā pseido, ja neizdodas Command_x1, neizdodas arī Command_x2, bet joprojām Command_x3 un Command_x4 izpildes ir atkarīgas no Command_x3 izejas statusa.

10. Savienošanas operators (\)

Savienošanas operators (\), kā norāda nosaukums, tiek izmantots, lai savienotu lielas komandas vairākās čaulas rindās. Piemēram, zemāk esošā komanda atvērs teksta faila testu (1) .txt.

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

Tas pagaidām ir viss. Ļoti drīz es nāku klajā ar vēl vienu interesantu rakstu. Līdz tam sekojiet līdzi, esiet vesels un savienots ar Tecmint. Neaizmirstiet sniegt vērtīgas atsauksmes mūsu komentāru sadaļā.