GNU/Linux >> Linux Esercitazione >  >> Linux

Terminali, shell, console e righe di comando

Se stai esplorando Linux o Unix, potresti sentire i termini terminale, riga di comando, shell e console e potresti essere giustamente confuso su quale sia quale e se siano la stessa cosa. Sono sicuramente tutti correlati, ma ci sono sfumature in ciascuno che hanno implicazioni importanti. Questo articolo guida l'utente attraverso la terminologia delle interfacce basate su testo di Linux.

Come funzionano i computer

Quando un computer si avvia, un kernel riconosce il proprio hardware fisico e consente a ciascun componente di comunicare tra loro. Esistono molti kernel diversi:molto tempo fa esisteva un kernel Unix, un kernel Sun, un kernel BSD e in seguito sono arrivati ​​il ​​kernel Linux, il kernel Hurd, un kernel Mach e un kernel NT.

E non sono tutti. Esistono kernel specializzati per tutti i tipi di dispositivi computazionali. Alcuni sono molto semplici e altri sono molto complessi, a seconda delle esigenze del dispositivo in esecuzione.

Il set di istruzioni più semplice per un computer lo tiene acceso. I driver hardware, orchestrati dal kernel, mantengono attive le ventole per prevenire il surriscaldamento, lo spazio su disco viene monitorato, gli stati della RAM gestiti, vengono rilevati nuovi dispositivi e così via. I primissimi computer facevano anche meno di questo nel loro stato di inattività, e ogni programma eseguito da un primo computer era essenzialmente il suo unico scopo per esistere, almeno mentre quel programma (sotto forma di schede perforate) veniva eseguito. Il concetto di eseguire un lavoro in background, o due applicazioni contemporaneamente, era inimmaginabile. Se volevi elaborare due lavori contemporaneamente, hai un secondo computer.

Guscio interattivo

Una volta che i computer sono avanzati, tuttavia, alcuni scienziati hanno riconosciuto che programmare un computer per uno scopo ogni volta che si avviava era inefficiente e, con i progressi tecnologici, sottodimensionato. Così hanno sviluppato qualcosa che hanno chiamato shell.

Esistono diversi resoconti sul motivo per cui è stato scelto il termine "shell", ma una spiegazione credibile e soddisfacente è che l'interfaccia della shell circonda il kernel proprio come un guscio di noce circonda una noce. La shell è la parte con cui un utente interagisce, mentre le richieste di potenza di calcolo sono gestite dal kernel.

La cosa importante da capire su una shell è che ha segnato una nuova era per l'informatica. La shell ha trasformato i computer da un'appliance in uno strumento elettrico che potrebbe cambiare la sua funzione su richiesta. I computer erano diventati interattivi. Anche nell'informatica moderna, una shell è il livello più basso di interazione che puoi avere con il tuo computer. Questo lo rende il modo più diretto per istruire un computer su ciò che vuoi che faccia dopo, quindi imparare la shell è una tattica inestimabile per gli utenti esperti.

La shell è un concetto astratto per molte persone. Quando si pensa a una shell, è utile pensarne una specifica e ce ne sono molte tra cui scegliere. Il più popolare è (GNU) Bash, ma Zsh e Fish sono alternative popolari a Bash. Tcsh e Ksh sono vecchi preferiti affidabili dai primi UNIX, con una rigorosa conformità POSIX. Ash e Dash mirano a essere leggeri e veloci, il che li rende ideali per i sistemi embedded e per ambienti minimali. Powershell di Microsoft è una shell open source basata su .NET.

Riga di comando

Quando accedi a una shell, ricevi un prompt. Alcune persone chiamano il prompt della shell una riga di comando, che in effetti è descrittivo:un prompt indica una riga in cui è possibile digitare un comando.

Un prompt è un simbolo per farti sapere che la shell è in attesa delle tue istruzioni. Un simbolo comune è il simbolo del dollaro ($ ), ma potrebbe anche essere un segno di percentuale (% ), una parentesi angolare (> ), un ottotorpo (# ), o qualcosa di completamente diverso. Ciò significa che quando utilizzi una shell, la tua visualizzazione predefinita è simile a questa:


$

La notevole differenza tra le shell è la sintassi. Ad esempio, in Bash e Zsh e Ash e Ksh, imposti le variabili con una dichiarazione "uguale":

$ foo=bar
$ echo $foo
bar

In Tcsh, invece, utilizzi la parola chiave set per le variabili:

$ set foo=bar
$ echo $foo
bar

Aiuto

In apparenza, l'interfaccia della shell non è esattamente user-friendly. Al contrario, sembra che tu debba sapere cosa fare con una shell. Questo non è ciò a cui sono abituati la maggior parte dei computer moderni, perché le applicazioni grafiche forniscono almeno agli utenti pulsanti e menu da esplorare, anche se non sanno esattamente cosa fa l'applicazione.

Anche se un utente comprende che la shell è in attesa di input, parole comuni, inglesi o altro, restituiscono errori o output non utili.

Ad esempio, se digiti help al prompt di Bash, ottieni un elenco di comandi integrati, alcuni dei quali producono risultati utili o consentono un'ulteriore interazione.

In questo senso, la shell non è la tua applicazione tipica. È davvero principalmente una riga di comando:una riga in cui digitare i comandi. Spetta all'utente sapere quali comandi sono disponibili e si presume che un utente che apre una shell abbia acquisito familiarità con almeno i comandi più rudimentali in modo che possa saperne di più sul sistema.

Poiché non è sempre così, è utile sui sistemi pubblici alias globalmente il comando per lo più inutile help a qualcosa di informativo, come shellp.

Console

Puoi accedere a una shell su Linux o BSD non eseguendo affatto una GUI (quindi una shell è tutto ciò che rimane), oppure premendo Alt + Maiusc e un tasto funzione da 2 a 6. Ogni tasto funzione ti porta a una schermata fornita di getty (o agetty, o qualcosa di simile, a seconda di ciò che usa la tua distribuzione). La schermata fornisce una richiesta di accesso a una shell e questa schermata viene spesso chiamata casualmente una console. Più precisamente, è una sessione getty o un dispositivo tty emulato.

Su Mac, non c'è modo di rinunciare all'esecuzione di una GUI su un sistema in esecuzione, sebbene al momento dell'avvio sia possibile utilizzare le chiavi di snag per l'avvio in modalità Utente singolo. La modalità Utente singolo su Mac OS disabilita molte funzioni, inclusa la gestione degli utenti, quindi generalmente non è consigliabile.

Il modo più comune per accedere a una shell sui computer moderni è aprire un emulatore di terminale, che esegue una shell al suo interno.

Terminale

Un terminale era storicamente un dispositivo fisico, prima ancora che esistesse il concetto di personal computer (PC). Un terminale era un oggetto simile a un computer, ma in realtà era solo uno schermo (o talvolta solo una stampante!) con una tastiera collegata. Una finestra di terminale su un computer moderno è un'emulazione di quell'oggetto storico e di solito puoi eseguire qualsiasi shell all'interno di un emulatore di terminale.

Ad esempio, sul desktop Linux, puoi eseguire un'istanza di un terminale GNOME che funge da finestra in una shell Bash e un'altra istanza di Terminale GNOME che funge da finestra in una shell Tcsh.

Il terminale stesso è lì solo per ospitare una shell in esecuzione. Un emulatore di terminale non elabora dati né esegue comandi, sebbene possa aggiungere funzionalità dell'interfaccia utente, come scorciatoie da tastiera speciali, la possibilità di trascinare i file in una shell, temi colore e così via.

Ci sono molti emulatori di terminale disponibili su tutte le piattaforme. I desktop Linux e BSD vengono forniti con xterm come ripiego e di solito includono un moderno emulatore per l'uso quotidiano (come GNOME Terminal, Konsole e così via). Mac OS viene fornito con un emulatore di terminale proprietario, ma iTerm2 è un sostituto di gran lunga superiore (e la sua licenza è GPLv2).

Per Windows, PowerShell è l'impostazione predefinita, ma ci sono molte altre opzioni open source come ConEmu e Cmder.

Ulteriori informazioni

Puoi saperne di più sui terminali e sulle shell che eseguono leggendo come navigare nella shell, come gestire i file nella shell e come personalizzare la tua shell. Se impari meglio facendo , quindi prendi in considerazione i corsi introduttivi di Red Hat Training.

[ Hai bisogno di aiuto per capire cosa digitare al terminale? Scarica il cheat sheet dei comandi Linux. ]


Linux
  1. 5 modi per eseguire comandi UNIX/Linux (e script della shell) in background

  2. Come contare il numero di righe in un file in Linux (esempi di comandi wc e nl)

  3. Esempi di creazione di alias di comando in diverse shell

  4. Qual è la differenza tra &> e >&in bash?

  5. Differenza tra '{}' e {} nel comando find?

Comando Dmesg in Linux

Comando Sysctl in Linux

Comando sorgente in Linux

Come ordinare i file in Linux (GUI e Shell)

Shell dei comandi

8 tipi di shell Linux