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
    • Contatto
  • LPI.org
2.1 Lezione 2
Argomento 1: La Comunità Linux e una Carriera nell'Open Source
1.1 Evoluzione di Linux e Sistemi Operativi più Diffusi
  • 1.1 Lezione 1
1.2 Principali Applicazioni Open Source
  • 1.2 Lezione 1
1.3 Software e Licenze Open Source
  • 1.3 Lezione 1
1.4 Competenze ICT - Lavorare con Linux
  • 1.4 Lezione 1
Argomento 2: Trovare il Proprio Modo di Operare su un Sistema Linux
2.1 Nozioni di Base sulla Command Line
  • 2.1 Lezione 1
  • 2.1 Lezione 2
2.2 Utilizzo della Command Line per Ottenere Aiuto
  • 2.2 Lezione 1
2.3 Utilizzo di Directory e Elenchi di File
  • 2.3 Lezione 1
  • 2.3 Lezione 2
2.4 Creazione, Spostamento ed Eliminazione di File
  • 2.4 Lezione 1
Argomento 3: Il Potere della Command Line
3.1 Archiviazione dei File sulla Command Line
  • 3.1 Lezione 1
3.2 Ricerca ed Estrazione di Dati dai File
  • 3.2 Lezione 1
  • 3.2 Lezione 2
3.3 Trasformare i Comandi in uno Script
  • 3.3 Lezione 1
  • 3.3 Lezione 2
Argomento 4: Il Sistema Operativo Linux
4.1 Scelta di un Sistema Operativo
  • 4.1 Lezione 1
4.2 Comprendere l'Hardware del Computer
  • 4.2 Lezione 1
4.3 Dove Sono Memorizzati i Dati
  • 4.3 Lezione 1
  • 4.3 Lezione 2
4.4 Il Tuo Computer in Rete
  • 4.4 Lezione 1
Argomento 5: Sicurezza e Permessi sui File
5.1 Sicurezza di Base e Identificazione dei Tipi di Utente
  • 5.1 Lezione 1
5.2 Creazione di Utenti e Gruppi
  • 5.2 Lezione 1
5.3 Gestione delle Autorizzazioni e delle Proprietà dei File
  • 5.3 Lezione 1
5.4 Directory e File Speciali
  • 5.4 Lezione 1
How to get certified
  1. Argomento 2: Trovare il Proprio Modo di Operare su un Sistema Linux
  2. 2.1 Nozioni di Base sulla Command Line
  3. 2.1 Lezione 2

2.1 Lezione 2

Certificazione:

Linux Essentials

Versione:

1.6

Argomento:

2 Trovare il Proprio Modo di Operare su un Sistema Linux

Obiettivo:

2.1 Nozioni di Base sulla Command Line

Lezione:

2 di 2

Introduzione

Tutte le shell gestiscono una serie di informazioni di stato durante ogni sessione di shell. Queste informazioni di runtime possono cambiare durante la sessione e influenzano il comportamento della shell stessa. Questi dati vengono utilizzati anche dai programmi per individuare elementi della configurazione del sistema. La maggior parte di questi dati è archiviata nelle così dette variabili, che tratteremo in questa lezione.

Variabili

Le variabili sono contenitori di dati, come testo o numeri. Una volta impostatolo, è possibile accedere al valore di una variabile in un secondo momento. Le variabili hanno un nome che consente di accedere a una specifica variabile anche quando il suo contenuto cambia. Sono uno strumento molto comune nella maggior parte dei linguaggi di programmazione.

Nella maggior parte delle shell Linux esistono due tipi di variabili:

Variabili locali

Queste variabili sono disponibili solamente per il processo shell corrente. Se crei una variabile locale e poi avvii un altro programma da questa shell, quel programma non potrà più accedere alla variabile. Poiché non vengono ereditate dai sottoprocessi, queste variabili sono chiamate variabili locali.

Variabili ambientali

Queste variabili sono disponibili sia in una sessione di shell specifica sia nei sottoprocessi generati da questa sessione di shell. Queste variabili possono essere utilizzate per passare le informazioni di configurazione ai comandi che vengono eseguiti. Poiché i programmi possono accedere a queste variabili, vengono chiamate variabili ambientali. La maggior parte delle variabili ambientali si trova in lettere maiuscole (per esempio PATH, DATE, USER). Un insieme di variabili d’ambiente standard fornisce, per esempio, informazioni sulla directory home dell’utente o sul tipo di terminale. Talvolta il set completo di tutte le variabili ambientali viene chiamato ambiente.

Ci si riferisce a questi tipi di variabili usando anche il termine ambito di variabile (variable scope).

Note

Le variabili non sono permanenti. Quando la shell in cui sono state impostate viene chiusa, tutte le variabili e il loro contenuto vengono persi. La maggior parte delle shell fornisce dei file di configurazione che contengono variabili che vengono impostate ogni volta che viene avviata una nuova shell. Le variabili che devono essere impostate in modo permanente devono essere aggiunte a uno di questi file di configurazione.

Gestire le Variabili

In qualità di amministratore di sistema dovrai creare, modificare o rimuovere sia le variabili locali sia quelle ambientali.

Lavorare con le Variabili Locali

È possibile impostare una variabile locale utilizzando l’operatore = (uguale). Un semplice assegnamento creerà una variabile locale:

$ greeting=hello
Note

Non lasciare alcuno spazio prima o dopo l’operatore =.

Puoi mostrare qualsiasi variabile utilizzando il comando echo. Il comando di solito visualizza il testo nella sezione degli argomenti:

$ echo greeting
greeting

Per accedere al valore della variabile dovrai utilizzare $ (simbolo del dollaro) davanti al nome della variabile.

$ echo $greeting
hello

Come si può vedere, la variabile è stata creata. Ora apri un’altra shell e prova a visualizzare il contenuto della variabile creata.

$ echo $greeting

Non viene visualizzato nulla. Ciò dimostra che le variabili esistono sempre solamente in una specifica shell.

Per verificare che la variabile sia effettivamente una variabile locale, prova a generare un nuovo processo e controlla se questo processo può accedere alla variabile. Possiamo farlo avviando un’altra shell e facendo eseguire a questa shell il comando echo. Poiché la nuova shell viene eseguita in un nuovo processo, non erediterà le variabili locali dal suo processo padre:

$ echo $greeting world
hello world
$ bash -c 'echo $greeting world'
world
Note

Assicurati di utilizzare le virgolette singole nell’esempio qui sopra.

Per rimuovere una variabile, dovrai utilizzare il comando unset:

$ echo $greeting
hey
$ unset greeting
$ echo $greeting
Note

unset richiede il nome della variabile come argomento. Pertanto non si può aggiungere $ al nome, poiché ciò risolverebbe la variabile e passerebbe il valore della variabile a unset al posto del nome della variabile.

Lavorare con le Variabili Globali

Per rendere una variabile disponibile ai sottoprocessi, possiamo trasformarla da variabile locale a variabile ambientale. Questo viene fatto tramite il comando export. Quando viene invocato con il nome della variabile, questa viene aggiunta all’ambiente della shell:

$ greeting=hello
$ export greeting
Note

Di nuovo, assicurati di non usare $ quando esegui il comando export perché vuoi passare il nome della variabile, non il suo contenuto.

Un modo più semplice per creare una variabile ambientale è combinare entrambi i comandi di cui sopra, assegnando il valore della variabile nella sezione del comando dedicata all’argomento.

$ export greeting=hey

Controlliamo di nuovo se la variabile è accessibile ai sottoprocessi:

$ export greeting=hey
$ echo $greeting world
hey world
$ bash -c 'echo $greeting world'
hey world

Un altro modo per utilizzare le variabili ambientali consiste nell’inserirle davanti ai comandi. Possiamo testarlo con la variabile ambientale TZ che contiene il fuso orario. Questa variabile è usata dal comando date per determinare quale fuso orario visualizzare:

$ TZ=EST date
Thu 31 Jan 10:07:35 EST 2019
$ TZ=GMT date
Thu 31 Jan 15:07:35 GMT 2019

Puoi visualizzare tutte le variabili ambientali usando il comando env.

La Variabile PATH

La variabile PATH è una delle più importanti variabili ambientali in un sistema Linux. Memorizza un elenco di directory, separate da due punti, che contengono programmi eseguibili che possono essere chiamati come comandi dalla shell Linux.

$ echo $PATH
/home/user/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Per aggiungere una nuova directory alla variabile, sarà necessario utilizzare il segno di interpunzione dei due punti (:).

$ PATH=$PATH:new_directory

Ecco un esempio:

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
$ PATH=$PATH:/home/user/bin
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/user/bin

Come puoi vedere $PATH viene utilizzato nel nuovo valore assegnato a PATH. Questa variabile viene risolta durante l’esecuzione del comando e garantisce che il contenuto originale della variabile venga preservato. Ovviamente puoi usare anche altre variabili nell’operazione di assegnamento:

$ mybin=/opt/bin
$ PATH=$PATH:$mybin
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/user/bin:/opt/bin

La variabile PATH deve essere gestita con cautela, poiché è fondamentale per lavorare dalla Command Line. Consideriamo la seguente variabile PATH:

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

Per scoprire come la shell invoca uno specifico comando, può essere eseguito which con il nome del comando come argomento. Possiamo, per esempio, tentare di scoprire dove è memorizzato nano:

$ which nano
/usr/bin/nano

Come si può vedere, l’eseguibile nano si trova nella directory /usr/bin. Rimuoviamo tale directory dalla variabile e controlliamo se il comando funziona ancora:

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

Cerchiamo nuovamente il comando nano:

$ which nano
which: no nano in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/bin:/usr/games)

Come si può vedere, il comando non viene trovato e quindi non viene eseguito. Il messaggio di errore spiega anche il motivo per cui il comando non è stato trovato e dove è stato cercato.

Riaggiungiamo le directory e proviamo a eseguire nuovamente il comando.

$ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
$ which nano
/usr/bin/nano

Ora il nostro comando funziona di nuovo.

Tip

L’ordine degli elementi in PATH definisce anche l’ordine di ricerca. Verrà eseguita la prima corrispondenza eseguibile trovata durante la ricerca tra i percorsi.

Esercizi Guidati

  1. Crea una variabile locale number.

  2. Crea una variabile ambientale ORDER utilizzando uno dei due metodi sopra riportati.

  3. Visualizza sia i nomi delle variabili sia il loro contenuto.

  4. Quali sono gli ambiti delle variabili create in precedenza?

Esercizi Esplorativi

  1. Crea una variabile locale nr_files e assegnale il numero di righe trovate nel file /etc/passwd. Suggerimento: controlla il comando wc e la sostituzione dei comandi senza dimenticare le virgolette.

  2. Crea una variabile ambientale ME. Assegnale il valore della variabile USER.

  3. Aggiungi il valore della variabile HOME a ME, utilizzando il delimitatore :. Visualizza il contenuto della variabile ME.

  4. Utilizzando l’esempio della data sopra riportato, crea una variabile chiamata today e assegnale la data di uno dei fusi orari.

  5. Crea un’altra variabile chiamata today1 e assegnale la data del sistema.

Sommario

In questa lezione hai imparato:

  • I tipi di variabili;

  • Come creare le variabili;

  • Come gestire le variabili.

Comandi utilizzati negli esercizi:

env

Mostra l’ambiente corrente.

echo

Genera del testo come output.

export

Rende le variabili locali disponibili ai sottoprocessi.

unset

Rimuove una variabile.

Risposte agli Esercizi Guidati

  1. Crea una variabile locale number.

    $ number=5
  2. Crea una variabile ambientale ORDER utilizzando uno dei due metodi sopra riportati.

    $ export ORDER=desc
  3. Visualizza sia i nomi delle variabili sia il loro contenuto.

    $ echo number
    number
    $ echo ORDER
    ORDER
    $ echo $number
    5
    $ echo $ORDER
    desc
  4. Quali sono gli ambiti delle variabili create in precedenza?

    • L’ambito della variabile locale number è solamente la shell corrente.

    • L’ambito della variabile d’ambiente ORDER è la shell corrente e tutte le sottoshell da essa generate.

Risposte agli Esercizi Esplorativi

  1. Crea una variabile locale nr_files e assegnale il numero di righe trovate nel file /etc/passwd. Suggerimento: controlla il comando wc e la sostituzione dei comandi senza dimenticare le virgolette.

    $ nr_files=`wc -l /etc/passwd`
  2. Crea una variabile ambientale ME. Assegnale il valore della variabile USER.

    $ export ME=$USER
  3. Aggiungi il valore della variabile HOME a ME, utilizzando il delimitatore :. Visualizza il contenuto della variabile ME.

    $ ME=$ME:$HOME
    $ echo $ME
    user:/home/user
  4. Utilizzando l’esempio della data sopra riportato, crea una variabile chiamata today e assegnale la data di uno dei fusi orari.

    Nell’esempio seguente vengono utilizzati i fusi orari GMT ed EST, ma qualsiasi fuso orario è valido.

    $ today=$(TZ=GMT date)
    $ echo $today
    Thu 31 Jan 15:07:35 GMT 2019

    o

    $ today=$(TZ=EST date)
    $ echo $today
    Thu 31 Jan 10:07:35 EST 2019
  5. Crea un’altra variabile chiamata today1 e assegnale la data del sistema.

    Supponendo di essere nell’orario GMT:

    $ today1=$(date)
    $ echo $today1
    Thu 31 Jan 10:07:35 EST 2019

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

2.2 Utilizzo della Command Line per Ottenere Aiuto (2.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.

© 2023 Linux Professional Institute (LPI) è lo standard di certificazione globale e l'organizzazione di supporto alla carriera per i Professionisti Open Source. Con più di 200,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–2023 The Linux Professional Institute Inc. Tutti i diritti riservati.