Ricerca nel sito web

10 utili operatori di concatenamento in Linux con esempi


Concatenare i comandi Linux significa combinare diversi comandi e farli eseguire in base al comportamento dell'operatore utilizzato tra di loro.

Il concatenamento di comandi in Linux è qualcosa come se si scrivessero brevi script di shell sulla shell stessa e li si eseguisse direttamente dal terminale. Il concatenamento consente di automatizzare il processo.

Inoltre, una macchina non presidiata può funzionare sistematicamente con l'aiuto di operatori concatenati.

Questo articolo mira a far luce sugli operatori di concatenamento di comandi utilizzati di frequente. Fornisce brevi descrizioni ed esempi corrispondenti che possono migliorare la produttività e consentire di scrivere codice conciso e significativo riducendo a volte il carico del sistema.

1. Operatore e commerciale (&) – Esegui il comando Linux in background

La funzione di "&" è di eseguire il comando in background. Basta digitare il comando seguito da uno spazio bianco e "&". Puoi eseguire più di un comando in background, in una sola volta.

Esegui un singolo comando Linux chiamato "ping" in background:

ping -­c5 linux-console.net &

Esegui due o più comandi apt in background, contemporaneamente:

apt update & apt upgrade &

2. Operatore punto e virgola (;) – Esegue più comandi

L'operatore punto e virgola (;) consente di eseguire più comandi contemporaneamente e l'esecuzione del comando avviene in sequenza.

apt update ; apt upgrade ; mkdir test

La combinazione di comandi precedente eseguirà prima l'istruzione update, poi l'istruzione upgrade e infine creerà una directory "test" nella directory di lavoro corrente.

3. Operatore AND (&&): esegui il secondo comando in caso di successo

L'operatore AND (&&) eseguirà il secondo comando solo se l'esecuzione del primo comando SUCCEEDS, ovvero lo stato di uscita dell'operatore il primo comando è 0. Questo comando è molto utile per verificare lo stato di esecuzione dell'ultimo comando.

Ad esempio, voglio visitare il sito web linux-console.net utilizzando il comando links, nel terminale, ma prima devo verificare se l'host è live o no.

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

4. Operatore OR (||) – Esecuzione condizionale del comando

L'operatore OR (||) è molto simile a un'istruzione "else" nella programmazione. L'operatore || consente di eseguire il secondo comando solo se l'esecuzione del primo comando fallisce, ovvero se lo stato di uscita del primo comando è "1".

Ad esempio, voglio eseguire "apt update" da un account non root e se il primo comando fallisce, il secondo comando "links linux-console.net" eseguirà.

apt update || links linux-console.net

Nel comando precedente, poiché all'utente non è stato consentito di aggiornare il sistema, significa che lo stato di uscita del primo comando è '1' e quindi l'ultimo comando 'links linux-console.net' viene eseguito.

Cosa succede se il primo comando viene eseguito correttamente, con uno stato di uscita "0"? Ovviamente! Il secondo comando non verrà eseguito.

mkdir test || links linux-console.net

Qui l'utente crea una cartella "test" nella sua directory home, alla quale l'utente è autorizzato. Il comando è stato eseguito con successo assegnando uno stato di uscita "0" e quindi l'ultima parte del comando non viene eseguita.

5. NOT Operatore (!) – Esecuzione selettiva dei comandi

L'operatore NOT (!) è molto simile all'affermazione "eccetto". Questo comando eseguirà tutto tranne la condizione fornita. Per capirlo, crea una directory "tecmint" nella tua home directory e "cd" su di essa.

mkdir tecmint 
cd tecmint

Successivamente, crea diversi tipi di file nella cartella "tecmint".

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

Vedi, abbiamo creato tutti i nuovi file nella cartella "tecmint".

ls 

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

Ora elimina tutti i file tranne il file "html" tutto in una volta, in modo intelligente utilizzando il comando rm.

rm -r !(*.html)

Giusto per verificare, ultima esecuzione. Elenca tutti i file disponibili utilizzando il comando ls.

ls 

a.html  b.html

6. AND – Operatore OR (&& – ||) – Esecuzione condizionale dei comandi

L'operatore riportato sopra è una combinazione degli operatori "AND" e "OR". È molto simile a un'affermazione "if-else".

Ad esempio, eseguiamo un ping su linux-console.net, se il successo risuona "Verificato" altrimenti risuona "Host Down".

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

Esempio di output:

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

Ora disconnetti la connessione Internet e prova di nuovo lo stesso comando.

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

Esempio di output:

ping: unknown host linux-console.net 
Host Down

7. Operatore PIPE (|) – Elaborazione dell'output semplificata

Questo operatore PIPE è molto utile quando l'output del primo comando funge da input per il secondo comando. Ad esempio, esegui la pipeline dell'output di "ls -l" in "less" e visualizza l'output del comando.

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. Operatore di combinazione di comandi {}

Combina due o più comandi, il secondo comando dipende dall'esecuzione del primo comando.

Ad esempio, controlla se una directory "bin" è disponibile o meno e genera l'output corrispondente.

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

9. Operatore di precedenza() – Gestione dell'ordine di esecuzione dei comandi

L'operatore () rende possibile eseguire i comandi in ordine di precedenza.

Command_x1 &&Command_x2 || Command_x3 && Command_x4.

Nello pseudo comando sopra, cosa succede se Command_x1 fallisce? Nessuno dei Command_x2, Command_x3, Command_x4 verrebbe eseguito, per questo usiamo Precedence Operator, come:

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

Nello pseudo comando sopra, se Command_x1 fallisce, anche Command_x2 fallisce, ma Command_x3 e Command_x4 vengono comunque eseguiti a seconda del stato di uscita di Command_x3.

10. Operatore di concatenazione (\) – Concatenazione di comandi su più righe

L'operatore di concatenazione (\), come specifica il nome, viene utilizzato per concatenare comandi di grandi dimensioni su più righe nella shell. Ad esempio, il comando seguente aprirà un file di testo test(1).txt.

nano test\(1\).txt

È tutto per ora. Presto pubblicherò un altro articolo interessante. Fino ad allora Rimani sintonizzato, sano e connesso a Tecmint. Non dimenticare di fornire il tuo prezioso feedback nella nostra sezione commenti.