10 operadors d'encadenament útils a Linux amb exemples pràctics


Encadenar ordres de Linux significa combinar diverses ordres i fer-les executar en funció del comportament de l'operador utilitzat entre elles. L'encadenament d'ordres a Linux és com si escriviu scripts d'intèrpret d'ordres curts al mateix intèrpret d'ordres i els executeu directament des del terminal. L'encadenament permet automatitzar el procés. A més, una màquina no vigilada pot funcionar de manera molt sistemàtica amb l'ajuda d'operadors encadenants.

Aquest article té com a objectiu donar llum als operadors d'encadenament d'ordres d'ús freqüent, amb descripcions breus i exemples corresponents que segurament augmentaran la vostra productivitat i us permetran escriure codis curts i significatius, a més de reduir la càrrega del sistema, de vegades.

1. Operador d'ampersand (&)

La funció de '&' és fer que l'ordre s'executi en segon pla. Només cal que escriviu l'ordre seguit d'un espai en blanc i &. Podeu executar més d'una ordre en segon pla, d'una sola vegada.

Executeu una ordre en segon pla:

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

Executeu dues ordres en segon pla, simultàniament:

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

2. Operador de punt i coma (;)

L'operador de punt i coma permet executar diverses ordres d'una sola vegada i l'execució de l'ordre es produeix de manera seqüencial.

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

La combinació d'ordres anterior executarà primer la instrucció d'actualització, després la instrucció d'actualització i, finalment, crearà un directori prova sota el directori de treball actual.

3. Operador AND (&&)

L'operador AND (&&) només executaria la segona ordre, si l'execució de la primera ordre SUCCEED, és a dir, l'estat de sortida de la primera ordre és 0. Aquesta ordre és molt útil per comprovar l'estat d'execució de l'última ordre.

Per exemple, vull visitar el lloc web linux-console.net mitjançant l'ordre d'enllaços, al terminal, però abans he de comprovar si l'amfitrió està en directe o no.

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

4. Operador OR (||)

L'operador OR (||) s'assembla molt a una declaració else a la programació. L'operador anterior us permet executar la segona ordre només si l'execució de la primera ordre falla, és a dir, l'estat de sortida de la primera ordre és 1.

Per exemple, vull executar apt-get update des d'un compte no root i si la primera ordre falla, s'executarà la segona ordre links linux-console.net.

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

A l'ordre anterior, com que l'usuari no tenia permís per actualitzar el sistema, vol dir que l'estat de sortida de la primera ordre és 1 i, per tant, s'executa l'última ordre links linux-console.net.

Què passa si la primera ordre s'executa correctament, amb un estat de sortida 0? Òbviament! La segona ordre no s'executarà.

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

Aquí, l'usuari crea una carpeta prova al seu directori d'inici, per a la qual l'usuari està permès. L'ordre s'ha executat correctament donant un estat de sortida 0 i, per tant, l'última part de l'ordre no s'executa.

5. NO operador (!)

L'operador NOT (!) S'assembla molt a una declaració excepte. Aquesta ordre executarà tot excepte la condició proporcionada. Per entendre-ho, creeu un directori tecmint al vostre directori d'inici i cd a ell.

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

A continuació, creeu diversos tipus de fitxers a la carpeta tecmint.

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

Mireu que hem creat tots els fitxers nous dins de la carpeta tecmint.

[email :~/tecmint$ ls 

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

Ara suprimiu tots els fitxers excepte el fitxer html alhora, d'una manera intel·ligent.

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

Només per comprovar, darrera execució. Llista tots els fitxers disponibles mitjançant l'ordre ls.

[email :~/tecmint$ ls 

a.html  b.html

6. Operador AND – OR (&& – ||)

L'operador anterior és en realitat una combinació de l'operador AND i OR. S'assembla molt a una declaració si no.

Per exemple, fem un ping a linux-console.net, si l'èxit fa ressò Verificat, sinó 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

Ara, desconnecteu la vostra connexió a Internet i torneu a provar la mateixa comanda.

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

7. Operador de canonades (|)

Aquest operador PIPE és molt útil quan la sortida de la primera ordre actua com a entrada de la segona ordre. Per exemple, canalitzeu la sortida de 'ls -l' a 'less' i consulteu la sortida de l'ordre.

[email :~$ ls -l | less

8. Operador de combinació d'ordres {}

Combina dues o més ordres, la segona depèn de l'execució de la primera.

Per exemple, comproveu si un directori 'bin' està disponible o no i emet la sortida corresponent.

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

9. Operador de prioritat()

L'operador permet executar l'ordre en ordre de preferència.

Command_x1 &&Command_x2 || Command_x3 && Command_x4.

A la pseudo ordre anterior, què passa si el Command_x1 falla? Cap dels comandaments_x2, Command_x3, Command_x4 s'executarien, per a això utilitzem l'operador de precedencia com:

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

A la pseudo ordre anterior, si Command_x1 falla, Command_x2 també falla, però encara s'executa Command_x3 i Command_x4 depèn de l'estat de sortida de Command_x3.

10. Operador de concatenació (\)

L'operador de concatenació (\) com el nom especifica, s'utilitza per concatenar ordres grans en diverses línies de l'intèrpret d'ordres. Per exemple, l'ordre següent obrirà el fitxer de text test(1).txt.

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

Això és tot per ara. Aviat faré un altre article interessant. Fins aleshores estigueu atents, saludables i connectats a Tecmint. No us oblideu de donar els vostres comentaris valuosos a la nostra secció de comentaris.