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 1
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 1

2.1 Lezione 1

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:

1 di 2

Introduzione

Le moderne distribuzioni Linux offrono una vasta gamma di interfacce utente grafiche, ma un amministratore avrà sempre bisogno di sapere come lavorare con la Command Line, chiamata anche shell. La shell è un programma che consente la comunicazione di tipo testuale tra il sistema operativo e l’utente. Di solito è un programma testuale che legge l’input dell’utente e lo interpreta sotto forma di comandi per il sistema.

Esistono diverse shell su Linux; questi sono solo alcuni esempi:

  • Bourne-again shell (Bash)

  • C shell (csh o tcsh, la versione migliorata di csh)

  • Korn shell (ksh)

  • Z shell (zsh)

Su Linux la più comune è la Shell Bash. È anche quella che verrà utilizzata nei nostri esempi ed esercizi.

Quando si utilizza una shell interattiva, l’utente immette i comandi nel cosiddetto prompt. Per ogni distribuzione Linux, il prompt predefinito può avere un aspetto leggermente diverso, ma di solito segue la seguente struttura:

username@hostname directory_corrente tipo_di_shell

Su Ubuntu o Debian GNU/Linux, il prompt per un utente ordinario sarà probabilmente simile a questo:

carol@mycomputer:~$

Il prompt del superuser sarà simile a questo:

root@mycomputer:~#

Su CentOS o Red Hat Linux, il prompt per un utente ordinario sarà invece simile a questo:

[dave@mycomputer ~]$

E il prompt del superuser sarà simile a questo:

[root@mycomputer ~]#

Spieghiamo ora ogni componente della struttura:

username

Il nome dell’utente che esegue la shell.

hostname

Il nome dell’host su cui viene eseguita la shell. Esiste anche un comando hostname con il quale puoi visualizzare o impostare il nome host del sistema.

directory_corrente

La directory in cui si trova attualmente la shell. ~ indica che la shell è nella directory home dell’utente corrente.

tipo_di_shell

$ indica che la shell è eseguita da un utente ordinario.

# indica che la shell è eseguita dal superutente root.

Poiché non abbiamo bisogno di privilegi speciali, nei successivi esempi utilizzeremo un prompt non privilegiato. Per brevità, useremo semplicemente $ per indicare il prompt.

Struttura della Command Line

La maggior parte dei comandi inseriti sulla Command Line segue la medesima struttura di base:

comando  [opzione(i)/parametro(i)...]  [argomento(i)...]

Prendi il seguente comando come esempio:

$ ls -l /home

Spieghiamo il senso di ogni componente:

Comando

Il programma che l’utente intende eseguire: ls nell’esempio sopra riportato.

Opzione(i)/Parametro(i)

Un “modificatore” che cambia in qualche modo il comportamento del comando, come -l nell’esempio sopra riportato. È possibile accedere alle opzioni in forma breve e lunga. Per esempio, -l è identico a --format=long.

È anche possibile combinare più opzioni e, per la forma abbreviata, le lettere di solito possono essere inserite assieme. Per esempio, i seguenti comandi fanno tutti la stessa cosa:

$ ls -al
$ ls -a -l
$ ls --all --format=long
Argomento(i)

I dati aggiuntivi richiesti dal programma, per esempio un nome di file o un percorso, come /home nell’esempio sopra riportato.

L’unica parte obbligatoria di questa struttura è il comando stesso. In generale, tutti gli altri elementi sono opzionali, ma un programma potrebbe richiedere che vengano specificati determinati parametri, opzioni o argomenti.

Note

La maggior parte dei comandi mostra una breve panoramica dei comandi disponibili quando vengono eseguiti con il parametro --help. Presto esamineremo altri modi per saperne di più sui comandi Linux.

Tipi di Comportamento dei Comandi

La shell supporta due tipi di comandi:

Interni

Questi comandi fanno parte della shell stessa e non sono programmi separati. Esistono circa 30 comandi di questo tipo. Il loro scopo principale è eseguire attività all’interno della shell (per esempio cd, set, export).

Esterni

Questi comandi risiedono in singoli file. Questi file sono in genere programmi o script binari. Quando viene eseguito un comando che non è incorporato nella shell (shell bultin), la shell utilizza la variabile PATH per cercare un file eseguibile con lo stesso nome del comando. Oltre ai programmi installati con il gestore di pacchetti della distribuzione, gli utenti possono anche creare i propri comandi esterni.

Il comando type mostra a quale tipologia appartiene uno specifico comando:

$ type echo
echo is a shell builtin
$ type man
man is /usr/bin/man

Quoting

Come utente Linux, dovrai creare o manipolare file o variabili in vari modi. Questo è facile quando si lavora con nomi di file brevi e con semplici valori, ma diventa più complicato quando, per esempio, sono coinvolti spazi, caratteri speciali e variabili. Le shell mettono a disposizione una funzionalità chiamata quoting che incapsula tali dati utilizzando vari tipi di virgolette (" ", ' '). In Bash, esistono tre tipi di virgolette:

  • Virgolette doppie

  • Virgolette singole

  • Caratteri di escape

Per esempio, i seguenti comandi non si comportano allo stesso modo a causa del quoting:

$ TWOWORDS="two words"
$ touch $TWOWORDS
$ ls -l
-rw-r--r-- 1 carol carol     0 Mar 10 14:56 two
-rw-r--r-- 1 carol carol     0 Mar 10 14:56 words
$ touch "$TWOWORDS"
$ ls -l
-rw-r--r-- 1 carol carol     0 Mar 10 14:56  two
-rw-r--r-- 1 carol carol     0 Mar 10 14:58 'two words'
-rw-r--r-- 1 carol carol     0 Mar 10 14:56  words
$ touch '$TWOWORDS'
$ ls -l
-rw-r--r-- 1 carol carol     0 Mar 10 15:00 '$TWOWORDS'
-rw-r--r-- 1 carol carol     0 Mar 10 14:56  two
-rw-r--r-- 1 carol carol     0 Mar 10 14:58 'two words'
-rw-r--r-- 1 carol carol     0 Mar 10 14:56  words
Note

La riga con TWOWORDS= indica una variabile Bash che noi stessi abbiamo creato. Introdurremo le variabili in seguito. Questo esempio ha solo lo scopo di mostrarti come il quoting influisce sull’output delle variabili.

Virgolette Doppie

Le virgolette doppie indicano alla shell di trattare il testo tra virgolette ("...") come caratteri normali. Tutti i caratteri speciali perdono il loro significato, eccetto $ (dollaro), \ (backslash) e ` (backquote). Ciò significa che è ancora possibile utilizzare variabili, sostituzione di comandi e funzioni aritmetiche.

Per esempio, la sostituzione della variabile $USER non è influenzata dalle virgolette doppie:

$ echo I am $USER
I am tom
$ echo "I am $USER"
I am tom

Il carattere “spazio”, invece, perde il suo significato di separatore di argomenti:

$ touch new file
$ ls -l
-rw-rw-r-- 1 tom students 0 Oct 8 15:18 file
-rw-rw-r-- 1 tom students 0 Oct 8 15:18 new
$ touch "new file"
$ ls -l
-rw-rw-r-- 1 tom students 0 Oct 8 15:19 new file

Come puoi vedere, nel primo esempio il comando touch crea due singoli file; il comando interpreta infatti le due stringhe come singoli argomenti. Nel secondo esempio, il comando interpreta entrambe le stringhe come un unico argomento e quindi crea solo un file. Tuttavia è buona norma evitare il carattere spazio nei nomi dei file. Potrebbe essere utilizzato, come alternativa, un trattino basso (_) o un punto (.).

Virgolette Singole

Le virgolette singole non hanno le eccezioni delle virgolette doppie. Revocano qualsiasi significato speciale attribuito a ogni carattere. Prendiamo uno dei primi esempi tra i precedenti sopra riportati:

$ echo I am $USER
I am tom

Se utilizzi le virgolette singole, vedrai un risultato diverso:

$ echo 'I am $USER'
I am $USER

Il comando ora visualizza la stringa esatta senza sostituire la variabile.

Caratteri di Escape

Possiamo utilizzare i caratteri di escape per rimuovere i significati speciali dei caratteri in Bash. Tornando alla variabile d’ambiente $USER:

$ echo $USER
carol

Notiamo che, per impostazione predefinita, il contenuto della variabile viene visualizzato nel terminale. Tuttavia, se dovessimo precedere il segno del dollaro con il carattere backslash (\), il significato speciale del segno del dollaro verrebbe annullato. Ciò a sua volta non permetterà a Bash di espandere il valore della variabile inserendo il nome utente della persona che esegue il comando, ma invece interpreterà il nome della variabile in modo letterale:

$ echo \$USER
$USER

Se ricordi, possiamo ottenere risultati simili a questo utilizzando le virgolette singole, che stampano in modo letterale a video il contenuto di ciò racchiudono. Tuttavia, il carattere di escape funziona in modo diverso, dicendo a Bash di ignorare qualsiasi significato speciale che possa avere il carattere che lo segue.

Esercizi Guidati

  1. Suddividi le seguenti righe nelle singole componenti: comando, opzione(i)/parametro(i) ed argomento(i):

    • Esempio: cat -n /etc/passwd

      Comando:

      cat

      Opzione:

      -n

      Argomento:

      /etc/passwd

    • ls -l /etc

      Comando:

      Opzione:

      Argomento:

    • ls -l -a

      Comando

      Opzione:

      Argomento:

    • cd /home/user

      Comando:

      Opzione:

      Argomento:

  2. Scopri la tipologia dei seguenti comandi:

    Esempio:

    pwd

    Shell builtin

    mv

    Comando esterno

    cd

    cat

    exit

  3. Risolvi i seguenti comandi che utilizzano le virgolette:

    Esempio:

    echo "$HOME is my home directory"

    echo /home/user is my home directory

    touch "$USER"

    touch 'touch'

Esercizi Esplorativi

  1. Con un unico comando e utilizzando l’espansione delle parentesi graffe in Bash (controlla la pagina di manuale di Bash), crea 5 file numerati da 1 a 5 con il prefisso game (game1, game2, …).

  2. Elimina tutti i 5 file che hai appena creato con un solo comando, utilizzando un carattere speciale diverso dal precedente (cerca Pathname Expansion nelle pagine di manuale di Bash).

  3. Esistono altri modi per far interagire due comandi tra loro? Quali sono?

​

Sommario

In questa lezione hai imparato:

  • I principi della shell Linux;

  • Cos’è la shell Bash;

  • La struttura della Command Line;

  • Una introduzione al quoting.

Comandi utilizzati negli esercizi:

bash

La shell più popolare sui computer Linux.

echo

Scrive del testo sul terminale.

ls

Elenca il contenuto di una directory.

type

Mostra come viene eseguito uno specifico comando.

touch

Crea un file vuoto o aggiorna la data di modifica di un file esistente.

hostname

Mostra o modifica il nome host di un sistema.

Risposte agli Esercizi Guidati

  1. Suddividi le seguenti righe nelle singole componenti: comando, opzione(i)/parametro(i) ed argomento(i):

    • ls -l /etc

      Comando:

      ls

      Opzione:

      -l

      Argomento:

      /etc

    • ls -l -a

      Comando:

      ls

      Opzione:

      -l -a

      Argomento:

    • cd /home/user

      Comando:

      cd

      Opzione:

      Argomento:

      /home/user

  2. Scopri la tipologia dei seguenti comandi:

    cd

    Shell builtin

    cat

    Comando esterno

    exit

    Shell builtin

  3. Risolvi i seguenti comandi che utilizzano le virgolette:

    touch "$USER"

    tom

    touch 'touch'

    Crea un file chiamato touch

Risposte agli Esercizi Esplorativi

  1. Con un unico comando e utilizzando l’espansione delle parentesi graffe in Bash (controlla la pagina di manuale di Bash), crea 5 file numerati da 1 a 5 con il prefisso game (game1, game2, …).

    È possibile utilizzare gli intervalli per indicare i numeri da 1 a 5 all’interno di un unico comando:

    $ touch game{1..5}
    $ ls
    game1  game2  game3  game4  game5
  2. Elimina tutti i 5 file che hai appena creato con un solo comando, utilizzando un carattere speciale diverso dal precedente (cerca Pathname Expansion nelle pagine di manuale di Bash).

    Poiché tutti i file iniziano con game e terminano con un singolo carattere (un numero da 1 a 5 in questo caso), può essere utilizzato ? come carattere speciale per indicare l’ultimo carattere nel nome del file:

    $ rm game?
  3. Esistono altri modi per far interagire due comandi tra loro? Quali sono?

    Sì, un comando potrebbe, per esempio, scrivere i dati in un file che viene poi elaborato da un altro comando. Linux può anche prendere l’output di un comando e utilizzarlo come input per un altro comando. Questo meccanismo si chiama piping; ne scopriremo di più in una delle prossime lezioni.

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.1 Nozioni di Base sulla Command Line (2.1 Lezione 2)

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.