Linux Professional Institute Learning Logo.
Torna al contenuto principale
  • Home
    • Tutte le Risorse
    • LPI Learning Materials
    • Collabora
    • Publishing Partner
    • Diventa un Publishing Partner
    • FAQ
    • Collaboratori
    • Traduzioni
    • Contatto
  • LPI.org
103.1 Lezione 2
Argomento 101: L'Architettura di Sistema
101.1 Determinare e Configurare le Impostazioni dell'Hardware
  • 101.1 Lezione 1
101.2 Avviare il sistema
  • 101.2 Lezione 1
101.3 Modificare runlevel / target di avvio e spegnere o riavviare il sistema
  • 101.3 Lezione 1
Argomento 102: Installazione di Linux e Gestione dei Pacchetti
102.1 Progettare il layout del disco rigido
  • 102.1 Lezione 1
102.2 Installare un boot manager
  • 102.2 Lezione 1
102.3 Gestire le librerie condivise
  • 102.3 Lezione 1
102.4 Utilizzare la gestione dei pacchetti Debian
  • 102.4 Lezione 1
102.5 Utilizzare la gestione dei pacchetti RPM e YUM
  • 102.5 Lezione 1
102.6 Linux come sistema virtualizzato
  • 102.6 Lezione 1
Argomento 103: GNU e Unix Commands
103.1 Lavorare con la Command Line
  • 103.1 Lezione 1
  • 103.1 Lezione 2
103.2 Elaborare flussi di testo utilizzando i filtri
  • 103.2 Lezione 1
103.3 Eseguire la gestione di base dei file
  • 103.3 Lezione 1
  • 103.3 Lezione 2
103.4 Utilizzare flussi, pipe e reindirizzamenti
  • 103.4 Lezione 1
  • 103.4 Lezione 2
103.5 Creare, controllare e terminare i processi
  • 103.5 Lezione 1
  • 103.5 Lezione 2
103.6 Modificare le priorità di esecuzione del processo
  • 103.6 Lezione 1
103.7 Cercare file di testo utilizzando espressioni regolari
  • 103.7 Lezione 1
  • 103.7 Lezione 2
103.8 Modifica base di un file
  • 103.8 Lezione 1
Argomento 104: Dispositivi, il File System Linux, il Filesystem Hierarchy Standard
104.1 Creare partizioni e filesystem
  • 104.1 Lezione 1
104.2 Mantenere l'integrità dei filesystem
  • 104.2 Lezione 1
104.3 Verificare il montaggio e lo smontaggio dei filesystem
  • 104.3 Lezione 1
104.5 Gestire le autorizzazioni e la proprietà dei file
  • 104.5 Lezione 1
104.6 Creare e modificare collegamenti hard e soft
  • 104.6 Lezione 1
104.7 Trovare i file di sistema e collocarli nella posizione corretta
  • 104.7 Lezione1
How to get certified
  1. Argomento 103: GNU e Unix Commands
  2. 103.1 Lavorare con la Command Line
  3. 103.1 Lezione 2

103.1 Lezione 2

Certificazione:

LPIC-1

Versione:

5.0

Argomento:

103 Comandi GNU e Unix

Obiettivo:

103.1 Lavorare con la Riga di Comando

Lezione:

2 di 2

Introduzione

Un ambiente di sistema operativo include gli strumenti di base, come la shell della riga di comando e talvolta una GUI, necessari per eseguire ciò di cui si ha bisogno. Il tuo ambiente inoltre ti fornirà tutta una serie di scorciatoie e valori predefiniti. In questa sezione impareremo come elencare, invocare e gestire quei valori.

Trovare le variabili di ambiente

Per iniziare, come possiamo identificare i valori attuali per ciascuna delle nostre variabili d’ambiente? Un modo è attraverso il comando env:

$ env
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
XDG_RUNTIME_DIR=/run/user/1000
XAUTHORITY=/run/user/1000/gdm/Xauthority
XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
GJS_DEBUG_TOPICS=JS ERROR;JS LOG
[...]

Otterrai un gran numero di informazioni in output, molto più di quanto è incluso nell’estratto sopra. Ma per ora nota la voce PATH, che contiene le directory in cui la tua shell (e altri programmi) cercheranno altri programmi senza necessariamente doverli richiamare indicandone il percorso completo. Con questo set, puoi eseguire un programma binario che risiede in /usr/local/bin dalla tua home directory, come se il file fosse locale.

Cambiamo argomento per un attimo. Il comando echo stamperà sullo schermo qualunque cosa tu gli dica. Che tu ci creda o no, ci saranno delle volte in cui usare echo, per ripetere letteralmente qualcosa, sarà molto utile.

$ echo "Hi. How are you?"
Hi. How are you?

Ma c’è qualcos’altro che puoi fare con echo. Quando gli dai il nome di una variabile d’ambiente - e gli dici che questa è una variabile anteponendo al suo nome un carattere $ — ciò facendo, invece di stampare semplicemente il nome della variabile, la shell restituirà il suo valore. Non sei sicuro che la tua directory preferita sia attualmente nella variabile PATH? Puoi verificare rapidamente attraverso il comando echo:

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

Creare Nuove Variabili d’Ambiente

Puoi aggiungere le tue variabili personalizzate al tuo ambiente. Il modo più semplice è usare il carattere =. La stringa a sinistra sarà il nome della tua nuova variabile e la stringa a destra sarà il suo valore. Ora puoi fornire il nome della variabile a echo per verificare se ha funzionato:

$ myvar=hello
$ echo $myvar
hello
Note
Da notare che non c’è spazio su entrambi i lati del segno uguale durante l’assegnazione variabile.

Ma ha funzionato davvero? Digita "bash" nel terminale per aprire una nuova shell. Questa nuova shell assomiglia esattamente a quella in cui ti trovavi, ma in realtà è una figlia (child) di quella originale (che chiamiamo genitore). Ora, all’interno di questa nuova shell figlia, cerca di far sì che echo realizzi la sua magia come prima. Niente. Cosa sta succedendo?

$ bash
$ echo $myvar

$

Una variabile che crei come abbiamo appena fatto sarà disponibile solo localmente - entro la sessione di shell stessa. Se avvii una nuova shell - o chiudi la sessione usando exit - la variabile non ti seguirà. Digitando exit qui tornerai alla shell genitore originale che, in questo momento, è dove vogliamo essere. Puoi eseguire echo $myvar ancora una volta se vuoi solo confermare che la variabile è ancora valida. Ora digita export myvar per passare la variabile a tutte le shell figlie che potresti successivamente creare. Provalo: digita bash per una nuova shell e poi echo seguito dalla variabile:

$ exit
$ export myvar
$ bash
$ echo $myvar
hello

Tutto ciò può sembrare un po' sciocco quando stiamo creando Shell senza uno scopo reale. Ma capire come vengono propagate le variabili della shell attraverso il tuo sistema diventerà molto importante una volta che si inizierà a scrivere script.

Cancellare una Variabile d’Ambiente

Vuoi sapere come eliminare tutte quelle variabili effimere che hai creato? Un modo è semplicemente quello di chiudere la shell genitore o riavviare il computer. Ma ci sono modi più semplici. Per esempio, "unset". Digitare unset seguito dalla variabile (senza $) per eliminarla. echo ora lo dimostrerà.

$ unset myvar
$ echo $myvar

$

Se c’è un comando unset, allora puoi scommettere che ci sia anche un comando set. L’esecuzione di set da sola mostrerà molte informazioni in output, ma in realtà non è poi così diverso da quello che ti ha restituito env. Guarda la prima riga di output che otterrai quando filtri per la stringa PATH:

$ set | grep PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
[...]

Qual è la differenza tra set ed env? Per i nostri scopi, la cosa principale è che l’esecuzione di set produrrà in output variabili e funzioni. Illustriamolo. Creeremo una nuova variabile chiamata mynewvar e poi confermeremo che è lì:

$ mynewvar=goodbye
$ echo $mynewvar
goodbye

Ora, eseguendo env insieme a grep per filtrare la stringa mynewvar non otterremo nessun risultato nell’output. Ma eseguire set allo stesso modo ci mostrerà la nostra variabile locale precedentemente creata.

$ env | grep mynewvar

$ set | grep mynewvar
mynewvar=goodbye

Usare il Virgolettato per Escludere i Caratteri Speciali

Ora è un buon momento per farti affrontare il problema dei caratteri speciali. I caratteri alfanumerici (a-z e 0-9) vengono normalmente letti letteralmente da Bash. Se provi a creare un nuovo file chiamato myfile, dovresti semplicemente digitare touch seguito da myfile e Bash saprà cosa farne. Ma se vuoi includere un carattere speciale nel tuo nome file, dovrai fare un po' più di lavoro.

Per illustrare questo, eseguiremo touch seguito da: my big file. Il problema è che ci sono due spazi tra le parole che Bash interpreterà. Mentre, tecnicamente, non chiameresti uno spazio un “carattere” , per Bash invece è come se lo fosse letteralmente. Se elenchi i contenuti della tua directory corrente, invece di un file chiamato my big file, vedrai tre file denominati, rispettivamente, my, big e file. Questo perché Bash ha ritenuto che tu volessi creare più file i cui nomi stavi passando in un elenco:

$ touch my big file
$ ls
my big file

Gli spazi verranno interpretati allo stesso modo se si eliminano (rm) i tre file in un solo comando:

$ rm my big file

Ora proviamo nel modo giusto. Digita touch e le tre parti del tuo nome file, ma questa volta racchiudi il nome tra virgolette. Questa volta ha funzionato. L’elenco dei contenuti della directory ti mostrerà un singolo file con il nome corretto.

$ touch "my big file"
$ ls
'my big file'

Esistono altri modi per ottenere lo stesso effetto. Le virgolette singole, per esempio, funzionano così come le virgolette doppie. (Nota che le virgolette singole conserveranno il valore letterale di tutti i caratteri, mentre le virgolette doppie conserveranno tutti i caratteri ad eccezione di $, `,\ e, in alcuni casi, !.)

$ rm 'my big file'

Anteporre un carattere di back slash (\) a un caratterre speciale farà si che Bash lo interpreti letteralmente.

$ touch my\ big\ file

Esercizi Guidati

  1. Usa il comando export per aggiungere una nuova directory al tuo path (questa modifica non sopravviverà al riavvio).

  2. Usa il comando unset per cancellare la variabile PATH. Prova a eseguire un comando usando sudo (per esempio sudo cat /etc/shadow) . Cosa è successo? Perché? (L’uscita dalla shell ti riporterà al tuo stato originale.)

Esercizi Esplorativi

  1. Ricerca in Internet l’elenco completo dei caratteri speciali.

  2. Prova a eseguire comandi usando stringhe composte da caratteri speciali e usando vari metodi per evitarli. Ci sono differenze tra il modo in cui questi metodi si comportano?

Sommario

In questa lezione abbiamo imparato:

  • Come identificare le variabili d’ambiente del tuo sistema.

  • Come creare le proprie variabili di ambiente ed esportarle in altre shell figlie.

  • Come rimuovere le variabili d’ambiente e come usare sia i comandi env che set.

  • Come gestire i caratteri speciali in modo che Bash li legga letteralmente.

In questa lezione sono stati discussi i seguenti comandi:

echo

Stampa in output stringhe e variabili.

env

Visualizza e modifica le variabili di ambiente.

export

Passa una variabile alle shell figlie.

unset

Rimuove i valori e gli attributi delle variabili e delle funzioni della shell.

Risposte agli Esercizi Guidati

  1. Usa il comando export per aggiungere una nuova directory al tuo path (questa modifica non sopravviverà al riavvio).

    Puoi aggiungere temporaneamente una nuova directory (chiamata per esempio myfiles che risiede nella tua home directory) al tuo percorso usando export PATH="/home/youname/myfiles:$PATH". Crea un semplice script nella directory myfiles /, rendilo eseguibile e prova ad eseguirlo da una directory diversa. Questi comandi presumono che tu sia nella tua home directory che contiene una directory chiamata myfiles.

    $ touch myfiles/myscript.sh
    $ echo '#!/bin/bash' >> myfiles/myscript.sh
    $ echo 'echo Hello' >> myfiles/myscript.sh
    $ chmod +x myfiles/myscript.sh
    $ myscript.sh
    Hello
  2. Usa il comando unset per cancellare la variabile PATH. Prova a eseguire un comando usando sudo (per esempio sudo cat /etc/shadow) . Che cosa è successo? Perché? (L’uscita dalla shell ti riporterà al tuo stato originale.)

    Digitando unset PATH si cancelleranno le impostazioni della variabile path corrente. Tentare di invocare un binario senza il suo percorso assoluto fallirà. Per questa ragione, tentare di eseguire un comando usando sudo (che è esso stesso un programma binario situato in /usr/bin/sudo) fallirà - a meno che non si specifichi la posizione assoluta, come in: /usr/bin/sudo /bin/cat /etc/shadow. Puoi resettare la tua PATH usando export o semplicemente uscendo dalla shell.

Risposte agli Esercizi Esplorativi

  1. Ricerca in Internet l’elenco completo dei caratteri speciali.

    Ecco la lista: & ; | * ? " ' [ ] ( ) $ < > { } # / \ ! ~.

  2. Prova a eseguire comandi usando stringhe composte da caratteri speciali e usando vari metodi per evitarli. Ci sono differenze tra il modo in cui questi metodi si comportano?

    Utilizzando il carattere " si manterrano i valori speciali del simbolo del dollaro ($), dell’apice traversa () e del back slash. L’utilizzo del carattere ``, annullerà invece tutti i significati speciali dei caratteri e consentirà una loro interpretazione letterale.

    $ echo "$mynewvar"
    goodbye
    $ echo '$mynewvar'
    $mynewvar

Linux Professional Institute Inc. Tutti i diritti riservati. Visita il sito Learning Materials: https://learning.lpi.org
Quest'opera è sotto la licenza 'Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License'.

Prossima Lezione

103.2 Elaborare flussi di testo utilizzando i filtri (103.2 Lezione 1)

Leggi la prossima Lezione

Linux Professional Institute Inc. Tutti i diritti riservati. Visita il sito Learning Materials: https://learning.lpi.org
Quest'opera è sotto la licenza 'Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License'.

LPI è una organizzazione non-profit.

© 2025 Linux Professional Institute (LPI) è lo standard di certificazione globale e l'organizzazione di supporto alla carriera per i Professionisti Open Source. Con più di 250,000 titolari di Certificazione, è il primo e il più grande ente di Certificazione Open Source e Linux vendor-neutral. LPI ha professionisti certificati in oltre 180 Paesi, offre i suoi Esami in più lingue e ha centinaia di Partner di formazione in tutto il mondo.

La nostra missione è promuovere l'uso dell'Open Source supportando le persone che vi lavorano.

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Contattaci
  • Privacy & Cookie Policy

Trovato un errore? Per favore scrivi a contattaci.

© 1999–2025 The Linux Professional Institute Inc. Tutti i diritti riservati.