Molte persone usano termini come: terminal وRiga di comando وConchiglia وconsolle Sembrano significare la stessa cosa, ma ognuno ha un significato e una funzione precisi e diversi nei sistemi operativi.
Confondere questi concetti non solo è un errore comune, ma a volte può anche causare un'incomprensione del funzionamento del sistema o dei suoi controlli.
q terminal È l'interfaccia che ti consente di interagire con il sistema, ma Conchiglia Lui è l'interprete che traduce i comandi, mentre Riga di comando È l'ambiente di testo in cui vengono scritti questi comandi.
Comprendere le sfumature di questi termini non solo ti aiuta a utilizzare il sistema in modo più efficiente, ma rende anche più chiaro e fluido il lavoro con strumenti come Linux, macOS e Windows.
In questa guida analizzeremo questi concetti passo dopo passo, in modo semplificato, in modo che la differenza tra loro sia chiara anche ai non esperti.
Hai mai chiamato "Terminale" "Shell" o "Riga di Comando"? Anche se hai ragione, ci sono differenze sostanziali tra questi termini. Affronterò queste differenze e le loro origini. Quante risposte riesci a dare?
Che cos'è Terminal?
Il termine "Terminale" è l'abbreviazione di "emulatore di terminale", un programma che imita le prestazioni dei primi terminali fisici. Agli albori dell'informatica, gli utenti interagivano con computer remoti tramite terminali dedicati tramite una connessione di comunicazione. Questi terminali contenevano una tastiera e un monitor o, in alcuni casi, una stampante. Gli utenti utilizzavano i terminali per inviare comandi e visualizzare testo.
Il video precedente mostra un terminale informatico DEC VT100 collegato a un mainframe ricondizionato.
Con la diffusione dei personal computer, i sistemi operativi iniziarono a emulare i terminali fisici tramite software. Ciò consentì agli utenti di interagire con sistemi remoti senza la necessità di un terminale fisico hardware. Oggi, l'eredità dei terminali fisici continua attraverso gli emulatori di terminale, che utilizziamo in modo molto simile.
Un emulatore di terminale consente di inviare comandi e ricevere testo da e verso il computer; la finestra del terminale è il contenitore grafico che la circonda. Pertanto, tecnicamente, la definizione comune e moderna di "terminale" in Linux non si riferisce alla finestra in sé, ma piuttosto a un dispositivo che emula l'operazione di invio di comandi e ricezione di testo.
Se siete interessati, abbiamo due articoli sulla storia del terminale. Uno copre le tre fasi dei terminali Unix, e l'altro riguarda l'evoluzione dai terminali di stampa ai terminali video.
Cos'è Shell?
La shell è lo strato esterno del sistema che facilita l'interazione con l'utente. In un sistema operativo, la shell può essere un'interfaccia a riga di comando o un'interfaccia utente grafica (GUI). In genere funziona come un programma in spazio utente che comunica con il sistema tramite i canali standard dello spazio utente, anziché interagire direttamente con il kernel.
Consigli
Lo spazio utente è l'ambiente operativo per i processi non autorizzati. Tutte le applicazioni più comuni (anche quelle di root) vengono eseguite nello spazio utente. Lo spazio kernel è riservato al codice autorizzato e ha autorità assoluta sul resto del sistema e accesso diretto all'hardware, ad esempio driver o componenti del kernel.
Nel linguaggio comune di Linux, una shell si riferisce in genere a un interprete della riga di comando che accetta comandi e script per eseguire attività sul sistema operativo. È un programma che legge, comprende ed esegue comandi. Esempi di shell comuni in Linux includono Bash, Zsh e fish. Ogni shell ha il proprio modo di gestire i comandi ed eseguire gli script.
Potresti anche aver sentito parlare della shell GNOME, un esempio di API grafica con cui gli utenti interagiscono per controllare il sistema, ad esempio per creare ed eliminare file, ecc. La GUI in Linux interagisce con il sistema a finestre e assume la forma di menu, finestre e altre funzioni desktop.
Che cos'è la riga di comando?
Una riga di comando (CLI, o interfaccia a riga di comando) è semplicemente un punto in cui immettere comandi in un sistema, solitamente tramite un'interfaccia di programmazione di un'applicazione. È un termine universale e una riga di comando può essere parte di un sistema operativo o persino di un programma. Spesso si confonde il termine con altri termini strettamente correlati, come terminale o shell, ma ha un significato diverso. Questa distinzione non dovrebbe preoccuparvi, ma esiste.
Un esempio comune di riga di comando sono le righe di testo immesse in Bash o Zsh.
Un altro esempio di riga di comando è Emacs, che consente di immettere comandi al volo utilizzando Elisp.
Che cos'è Console?
La console Linux è un sottosistema di input/output fornito con il kernel Linux. Questo modulo riceve messaggi e consente l'interazione con il kernel.
La differenza tra una console Linux e un emulatore di terminale è che il driver della console Linux viene eseguito nello spazio kernel, visualizza messaggi di sistema e consente l'interazione diretta con il sistema Linux. Gli emulatori di terminale, invece, sono semplicemente programmi per inviare comandi e ricevere risposte, che operano interamente nello spazio utente. Inoltre, le moderne console Linux hanno molte meno funzionalità rispetto agli emulatori di terminale.
La console Linux gestisce terminali virtuali chiamati TTY (o console virtuali). È possibile interagire con la console Linux tramite questi terminali, situati in /dev/tty*, dove "*" è un numero. Allo stesso modo, gli emulatori di terminale interagiscono con i terminali virtuali situati nella directory /dev/pts/ (ad esempio, /dev/pts/0, /dev/pts/1, ecc.).
TTY è l'abbreviazione di Teletypewriter. Storicamente, si trattava di dispositivi elettromeccanici, molto simili alle macchine da scrivere, in grado di inviare e ricevere messaggi elettronici tramite linee di telecomunicazione (come telefono, telegrafo o linea seriale). Questi dispositivi risalgono all'era del telegrafo (un'evoluzione del codice Morse). I moderni sistemi Linux emulano questi dispositivi.
I video precedenti mostrano una macchina da scrivere remota connessa a un server Linux tramite una linea seriale. L'utente invia comandi alla console Linux e ne riceve l'output tramite nodi seriali TTY (ad esempio, /dev/ttyS0).
In un modo o nell'altro, sia le console virtuali che gli emulatori di terminale eseguono un'API shell, solitamente Bash. Queste interfacce possono sembrare simili, ma i loro contesti di esecuzione sono piuttosto diversi.
È possibile accedere a TTY tramite Ctrl+Alt+F*, dove "*" rappresenta un numero (da 1 a 7). Le distribuzioni Linux in genere configurano TTY1 per avviare il display manager (schermata di login), che a sua volta avvia l'API grafica (ovvero l'ambiente desktop). I numeri da 2 a 7 sono solitamente disponibili, ma passando a TTY1 si torna al desktop.
Utilizzare il seguente comando per scoprire a quale console virtuale è connessa la sessione di accesso.
loginctl session-status
La mia sessione attuale è connessa a vc1 (nota anche come console virtuale 1 o TTY1), come mostrato nell'immagine precedente.
In breve, la console Linux è un sottosistema di input/output a livello kernel che può essere controllato tramite una console virtuale. Questi dispositivi TTY hanno radici storiche ed emulano macchine da scrivere remote. È ancora possibile inviare e ricevere comandi al kernel Linux tramite macchine da scrivere remote.
Spesso si confondono questi termini, ma esistono chiare differenze tecniche tra loro. Ad esempio, una riga di comando (CLI) può significare un terminale o una console. Una shell può significare entrambi. Spesso si dice "aprire una shell", ma in realtà si intende aprire un terminale. Tuttavia, è possibile eseguire l'operazione specificata anche tramite una console virtuale.
Per la maggior parte degli utenti, il termine corretto è "finestra di terminale". Questa apre una finestra grafica ed esegue comandi. Anche il termine "CLI" è corretto perché può riferirsi a qualsiasi interfaccia a riga di comando (incluso il buffer delle miniature di Emacs). Tuttavia, se qualcuno vi chiede di aprire una console, si tratta di una richiesta molto specifica, quindi dovreste prestare attenzione al motivo.
Ora che conosci la differenza tra i diversi termini, potresti voler imparare a usare il terminale Linux come principiante.
Sebbene termini come terminal وConchiglia وRiga di comando وconsolle Sembrano intrecciati, ma ognuno ha una funzione specifica che, nel suo insieme, forma la struttura di controllo del sistema.
Comprendere queste differenze semplifica l'interazione con i comandi di sistema e consente di gestire meglio i file, eseguire programmi e personalizzare l'ambiente di lavoro.
Distinguere tra questi concetti non è solo una conoscenza teorica, ma un passaggio essenziale per chiunque voglia approfondire i sistemi operativi e utilizzarli in modo efficace e professionale.













