buzzoole code

Micro corso Bash Unix/Linux – Parte 2

bash

In questa parte del tutorial vedremo come effettuare il Piping e il Redirect dei comandi. Ovviamente il tutto è corredato da un insieme di esempi a fini esplicativi!!

PIPING E REDIRECT

Poiché i comandi Unix sono dei “filtri” è possibile redirigere l’output di un comando verso altre destinazioni (file, stdin, stdout):

utilizza file_input come standard input. Di solito lo standard input è la tastiera;

scrive l’output del programma su file;

scrive l’output del programma sul file in append.

ESEMPI

scrive la lista dei file della directory corrente, all’interno del file contenutodirectory;

ordina il contenuto di file1 e lo scrive su file2;

E’ possibile utilizzare lo standard output di un comando come standard input di un altro (Piping). Per scrivere una serie di comandi in piping bisogna utilizzare l’operatore “|” .

ESEMPI

cerca tra i file contenuti nel direttorio quelli che si chiamano “documenti”;

who preleva il numero di utenti, wc conta il numero di parole nella lista, il risultato viene scritto sul file num_utenti;

lista dei file sul direttorio corrente in ordine invertito.

METACARATTERI ED ESPANSIONE

La shell unix riconosce dei caratteri speciali:

  • * : uno o una sequenza qualsiasi di caratteri contenuti nel nome di un file;
  • ? : un carattere qualsiasi;
  • [zfc] : un carattere qualsiasi tra ‘z’,’f’,’c’, nel nome di un file;
  • [a-g] : qualsiasi carattere compreso tra ‘a’ e ‘g’ nel nome di un file;
  • \ : escape, il carattere successivo viene interpretato come un normale carattere;
  • ` ` : backquote, tutto ciò che c’è al loro interno viene interpretato come se fosse un comando (si scrivono schiacciano alt destro + apostrofo);
  • “ ” : inibisce l’interpretazione di *, ?, [ ], < , > , >>, !
  • # : commento
  • #! : all’inizio del file indica quale programma utilizzare per interpretare il file di testo

ESEMPI DI ESPANSIONE

ritorna tutti i file che contengono al loro interno un punto.
In questo caso, quindi, il comando riconosce ciao.exe ,  ecco.jpg ma non riconoscerà né .ciao né tantomeno ecco. poiché il metacarattere * indica una sequenza di UNO o più caratteri;

filtra, ad esempio, il file Foto2001-01-10 ma non Foto2001-1-10;

Tutte le variabili shell sono STRINGHE. Il loro valore si riferisce come $var.
Per forzare l’interpretazione di una variabile come se fosse un numero è necessario utilizzare il comando expr!

ESEMPI

Se non utilizzo i backquote “expr 1 + 3” non viene sostituito con il risultato del comando e viene, quindi, interpretato come se fosse una stringa!!!

Da notare che i doppi apici hanno evitato che l’interprete effettuasse una redirezione dell’input e dell’output!!!

In generale l’interprete shell sostituisce i vari caratteri speciali come segue:

  1. Redirezione dell’input e dell’output ( echo > hello );
  2. Sostituzione backquote con risultato dei comandi ( `pwd` viene sostituito con “/home/user/documenti/”);
  3. Sostituzione di variabili ( $HOME viene sostituito con “/home/Michele/”);
  4. Sostituzione dei metacaratteri ( ci*o viene sostituito con “ciao” e “ciano”);

Vai alla parte 1 – Intruduzione shell unix,file system,utenti,gruppi
Vai alla parte 3 – Costrutti IF-FOR-WHILE, Riepilogo comandi

Questo Blog è Indipendente e Supportato Solamente dai suoi Lettori.
Se vuoi sostenerlo, Condivi il Post sui Social Network:
Aggiungi il nostro sito alla Whitelist di Adblock Plus
e magari Fai Anche un Acquisto su Amazon partendo da Qui
(a te non costa nulla!).
Tags:, ,