10 hyödyllistä ketjutusoperaattoria Linuxissa esimerkkien kanssa


Linux-komentojen ketjuttaminen tarkoittaa useiden komentojen yhdistämistä ja niiden suorittamista niiden välillä käytetyn operaattorin käyttäytymisen perusteella.

Komentojen ketjuttaminen Linuxissa on jotain sellaista, että kirjoitat lyhyitä shell-skriptejä itse shelliin ja suoritat ne suoraan päätteestä. Ketjuttaminen mahdollistaa prosessin automatisoinnin.

Lisäksi valvomaton kone voi toimia systemaattisesti ketjutusoperaattoreiden avulla.

Tämän artikkelin tarkoituksena on valaista usein käytettyjä komentoketjuoperaattoreita. Se tarjoaa lyhyitä kuvauksia ja vastaavia esimerkkejä, jotka voivat parantaa tuottavuuttasi ja antaa sinun kirjoittaa tiivistä, merkityksellistä koodia ja vähentää ajoittain järjestelmän kuormitusta.

1. Et-merkki-operaattori (&) – Suorita Linux-komento taustalla

&-komennon tehtävänä on saada komento toimimaan taustalla. Kirjoita komento, jonka jälkeen välilyönti ja &. Voit suorittaa useamman kuin yhden komennon taustalla yhdellä kertaa.

Suorita yksi Linux-komento nimeltä "ping" taustalla:

ping -­c5 linux-console.net &

Suorita kaksi tai useampi apt-komento taustalla samanaikaisesti:

apt update & apt upgrade &

2. Puolipisteoperaattori (;) – Suorita useita komentoja

Puolipisteen (;)-operaattori mahdollistaa useiden komentojen suorittamisen yhdellä kertaa ja komennon suorittaminen tapahtuu peräkkäin.

apt update ; apt upgrade ; mkdir test

Yllä oleva komentoyhdistelmä suorittaa ensin update-komennon, sitten upgrade-komennon ja lopuksi luo "testi"-hakemiston nykyisen työhakemiston alle.

3. JA Operaattori (&&) – Suorita toinen komento onnistuessaan

AND-operaattori (&&) suorittaisi vain toisen komennon, jos ensimmäisen komennon suorittaminen ONNISTUS, eli komennon poistumistila ensimmäinen komento on 0. Tämä komento on erittäin hyödyllinen viimeisen komennon suoritustilan tarkistamisessa.

Haluan esimerkiksi vierailla sivustolla linux-console.net links-komennolla terminaalissa, mutta ennen sitä minun on tarkistettava, onko isäntä live vai >ei.

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

4. TAI Operaattori (||) – Ehdollinen komennon suoritus

OR-operaattori (||) muistuttaa ohjelmoinnin else-lausetta. Operaattorin || avulla voit suorittaa toisen komennon vain, jos ensimmäisen komennon suoritus epäonnistuu, eli ensimmäisen komennon poistumistila on 1.

Haluan esimerkiksi suorittaa komennon apt update ei-root-tililtä ja jos ensimmäinen komento epäonnistuu, toinen links linux-console.net-komennon. toteuttaa.

apt update || links linux-console.net

Koska yllä olevassa komennossa käyttäjä ei saanut päivittää järjestelmää, se tarkoittaa, että ensimmäisen komennon poistumistila on '1'. > ja siten viimeinen komento 'links linux-console.net' suoritetaan.

Entä jos ensimmäinen komento suoritetaan onnistuneesti ja poistumistila on 0? Ilmeisesti! Toinen komento ei toimi.

mkdir test || links linux-console.net

Täällä käyttäjä luo kotihakemistoonsa kansion test, johon käyttäjä on sallittu. Komento suoritettiin onnistuneesti ja antaa poistumistilan 0, joten komennon viimeistä osaa ei suoriteta.

5. EI operaattori (!) – Komentojen valikoiva suoritus

EI-operaattori (!) on paljon kuin paitsi-lause. Tämä komento suorittaa kaikki paitsi annettu ehto. Ymmärtääksesi tämän luo hakemisto tecmint kotihakemistoosi ja cd siihen.

mkdir tecmint 
cd tecmint

Luo seuraavaksi useita tiedostoja tecmint-kansioon.

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

Katso, olemme luoneet kaikki uudet tiedostot kansioon tecmint.

ls 

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

Poista nyt kaikki tiedostot paitsi html-tiedosto kerralla älykkäällä tavalla käyttämällä rm-komentoa.

rm -r !(*.html)

Vain varmistuksena, viimeinen suoritus. Listaa kaikki käytettävissä olevat tiedostot ls-komennolla.

ls 

a.html  b.html

6. AND – TAI-operaattori (&& – ||) – Komentojen ehdollinen suorittaminen

Yllä oleva operaattori on yhdistelmä "AND" ja "OR" Operator. Se muistuttaa paljon if-else-lauseketta.

Tehdään esimerkiksi ping osoitteeseen linux-console.net, jos onnistuminen kaikuu 'Verified', muuten kaiku 'Host Down'.

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

Näytetulos:

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

Katkaise nyt Internet-yhteys ja yritä samaa komentoa uudelleen.

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

Näytetulos:

ping: unknown host linux-console.net 
Host Down

7. PIPE Operator (|) – Virtaviivainen ulostulon käsittely

Tämä PIPE-operaattori on erittäin hyödyllinen, kun ensimmäisen komennon tulos toimii toisen komennon syötteenä. Liuoi esimerkiksi ls -l-tulostus arvoon vähemmän ja katso komennon tulos.

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. Komentoyhdistelmäoperaattori {}

Yhdistä kaksi tai useampi komento, toinen komento riippuu ensimmäisen komennon suorittamisesta.

Tarkista esimerkiksi, onko bin-hakemisto käytettävissä vai ei, ja tulosta vastaava tulos.

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

9. Ensisijainen operaattori() – Managing Command Execution Order

()-operaattori mahdollistaa komentojen suorittamisen tärkeysjärjestyksessä.

Command_x1 &&Command_x2 || Command_x3 && Command_x4.

Mitä jos Command_x1 epäonnistuu yllä olevassa pseudo-komennossa? Kumpaakaan Command_x2, Command_x3 tai Command_x4 ei suoritettaisi, tähän käytämme Precedence Operator -toimintoa seuraavasti:

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

Jos yllä olevassa pseudo-komennossa Command_x1 epäonnistuu, myös Command_x2 epäonnistuu, mutta silti Command_x3 ja Command_x4 suoritetaan riippuen Command_x3:n poistumistila.

10. Ketjutusoperaattori (\) – Monirivinen komentojen ketjutus

Nimen mukaan ketjutusoperaattoria (\) käytetään suurten komentojen ketjuttamiseen useille komentotulkin riveille. Esimerkiksi alla oleva komento avaa tekstitiedoston test(1).txt.

nano test\(1\).txt

Tässä kaikki tältä erää. Esitän pian toisen mielenkiintoisen artikkelin. Siihen asti Pysy kuulolla, terveenä ja yhteydessä Tecmintiin. Älä unohda antaa arvokasta palautettasi kommenttiosiossa.