Domanda Qual è la differenza tra Terminal, Console, Shell e Command Line?


Qual è la differenza tra Terminal, Console, Shell e Command Line?


173
2017-08-04 04:35


origine


(1/2) Agent Cool è per lo più corretto, ma la definizione di Console che fornisce è obsoleta, dato questo argomento. Il suo link ha le informazioni corrette, se lo segui comunque. Leggi il totale definizione al suo link. La console viene utilizzata in modo approssimativo per indicare molte cose simili, ma soprattutto si riferisce di solito ai dispositivi di ingresso e uscita umani LOCAL ATTACHED, ad es. tastiera, display e forse il mouse. - 0xSheepdog
(2/2) Questo può sembrare un punto di vista pedagogico, ma come un sistematissimo sistema, lo dirò non è. Quando un sistema ha un problema e sembra essere completamente bloccato / inattivo / non in linea, è necessario controllare console fisica del sistema per vedere se funziona ancora, ma ha semplicemente perso la connettività di rete. Questo piccolo dettaglio potrebbe salvarti o costarti un dato, elaborare informazioni, ecc. Pedante, sì. Ma importante. - 0xSheepdog
@ 0xSheepdog Potresti voler espandere questi commenti in una risposta completa (incluse definizioni o spiegazioni anche per gli altri termini), pubblicati come tali. Non è male per una domanda avere più risposte (tranne forse quando trasmettono esattamente le stesse informazioni e allo stesso modo). Non sono sicuro del motivo per cui l'importante pratica di controllare una macchina localmente si basa effettivamente sulla conoscenza / chiamata della sua interfaccia fisica umana su una console, ma forse c'è un argomento che è importante per una comunicazione efficace con i colleghi o per l'uso della documentazione. (Puoi chiarire che nella tua risposta.) - Eliah Kagan
A causa della loro stretta relazione (vedi tutte le buone risposte) questi termini sono a volte usati come sinonimi, che probabilmente è quello che ti ha portato a chiedere questo. - Mark
Vedere: Qual è la differenza esatta tra un 'terminale', una 'shell', una 'tty' e una 'console'? su Unix e LinuxSE. - Piotr Dobrogost


risposte:


La risposta breve è quella

  • terminale = ambiente di input / output di testo
  • console = terminale fisico
  • shell = interprete della riga di comando

Console e terminale sono strettamente correlati. Originariamente, intendevano un pezzo di equipaggiamento attraverso il quale si poteva interagire con un computer: nei primi giorni di Unix, ciò significava a telescriventeun dispositivo simile a una macchina da scrivere, talvolta chiamato telescrivente o "tty" in stenografia. Il nome "terminale" deriva dal punto di vista elettronico e il nome "console" dal punto di vista del mobile. Molto presto nella storia di unix, le tastiere elettroniche e gli schermi sono diventati la norma per i terminali.

Nella terminologia Unix, a terminale è un tipo particolare di file del dispositivo che implementa un numero di comandi aggiuntivi (ioctls) oltre a leggere e scrivere. Alcuni terminali sono forniti dal kernel per conto di un dispositivo hardware, ad esempio con l'input proveniente dalla tastiera e l'uscita che va a una schermata in modalità testo, o con l'input e l'output trasmessi su una linea seriale. Altri terminali, a volte chiamati pseudo-terminali o pseudo-tty, sono forniti (attraverso un sottile strato del kernel) da programmi chiamati emulatori di terminali. Alcuni tipi di emulatori di terminale includono:

  • Applicazioni GUI in esecuzione in X Window System: xterm, Terminale Gnome, Konsole, Terminator, ecc.
  • Schermo e tmux, che fornisce uno strato di isolamento tra un programma e un altro terminale
  • Ssh, che collega un terminale su una macchina con programmi su un'altra macchina
  • Aspettarsi, per lo scripting delle interazioni del terminale

La parola terminale può anche avere un significato più tradizionale di un dispositivo attraverso il quale si interagisce con un computer, in genere con una tastiera e un display. Ad esempio un terminale X è un tipo di thin client, un computer per scopi speciali il cui unico scopo è guidare una tastiera, un display, un mouse e occasionalmente altre periferiche di interazione umana, con le applicazioni effettive eseguite su un altro computer più potente.

UN consolle è generalmente un terminale nel senso fisico che è per definizione un terminale primario direttamente collegato ad una macchina. La console appare al sistema operativo come un terminale (implementato dal kernel). Su alcuni sistemi, come Linux e FreeBSD, la console appare come diversi terminali (ttys) (combinazioni di tasti speciali commutano tra questi terminali); solo per confondere le cose, il nome dato a ciascun particolare terminale può essere "console", "console virtuale", "terminale virtuale" e altre varianti.

Guarda anche Perché un terminale virtuale è "virtuale" e che cosa / perché / dove è il "vero" terminale?.


UN riga di comando è un'interfaccia in cui l'utente digita un comando (che è espresso come una sequenza di caratteri - tipicamente un nome di comando seguito da alcuni parametri) e preme il Ritorno chiave per eseguire quel comando.

UN conchiglia è l'interfaccia principale che gli utenti vedono quando accedono, il cui scopo principale è quello di avviare altri programmi. (Non so se la metafora originale è che la shell è l'ambiente domestico per l'utente, o che la shell è ciò che altri programmi sono in esecuzione.)

In cerchi unix, conchiglia si è specializzato nel significare a shell della riga di comando, incentrato sull'inserimento del nome dell'applicazione che si desidera avviare, seguito dai nomi dei file o altri oggetti su cui l'applicazione dovrebbe agire e premendo il tasto Invio. Altri tipi di ambienti (con la notevole eccezione recente di Gnome Shell) di solito non usano la parola "shell"; per esempio, i sistemi di finestre coinvolgono "gestori di finestre" e "ambienti desktop", Non un" guscio ".

Ci sono molte diverse shell Unix. La shell predefinita di Ubuntu è bash (come la maggior parte delle altre distribuzioni Linux). Alternative popolari includono zsh (che sottolinea potenza e personalizzazione) e pesce (che sottolinea la semplicità).

Le shell della riga di comando includono costrutti di controllo del flusso per combinare i comandi. Oltre a digitare i comandi su un prompt interattivo, gli utenti possono scrivere script. Le shell più comuni hanno una sintassi comune basata su Bourne_shell. Quando si discute "programmazione della shell", La shell è quasi sempre implicita per essere una shell in stile Bourne. Alcune shell che vengono spesso utilizzate per lo scripting ma che non dispongono di funzionalità interattive avanzate includono la shell di Korn (ksh) e molti cenere varianti. Praticamente qualsiasi sistema simile a Unix ha una shell in stile Bourne installata come /bin/shdi solito cenere, ksh o bash. Su Ubuntu, /bin/sh è trattino, una variante di cenere (scelta perché è più veloce e utilizza meno memoria di bash).

Nell'amministrazione di sistema unix, di un utente conchiglia è il programma che viene richiamato quando accedono. Gli account utente normali hanno una shell della riga di comando, ma gli utenti con accesso limitato potrebbero avere un shell ristretta o qualche altro comando specifico (ad esempio per account con trasferimento di file).


La divisione del lavoro tra terminale e shell non è completamente ovvia. Ecco i loro compiti principali.

  • Input: il terminale converte le chiavi in ​​sequenze di controllo (ad es. Sinistra → \e[D). La shell converte sequenze di controllo in comandi (ad es. \e[D → backward-char).
  • Line edition, input storico e completamento sono forniti dalla shell.
    • Il terminale può invece fornire la propria edizione di linea, la cronologia e il completamento e inviare solo una riga alla shell quando è pronta per essere eseguita. L'unico terminale comune che funziona in questo modo è M-x shellin Emacs.
  • Uscita: la shell emette istruzioni come "display foo"," Cambia il colore di primo piano in verde "," sposta il cursore sulla riga successiva ", ecc. Il terminale agisce su queste istruzioni.
  • Il prompt è puramente un concetto di shell.
  • La shell non vede mai l'output dei comandi che esegue (a meno che non sia reindirizzato). La cronologia delle uscite (scrollback) è puramente un concetto di terminale.
  • Il copia-incolla tra applicazioni è fornito dal terminale (di solito con il mouse o sequenze di tasti come Ctrl+Cambio+V o Cambio+Inserire). La shell potrebbe anche avere il proprio meccanismo di copia-incolla interna (ad es. Meta+W e Ctrl+Y).
  • Controllo del lavoro (lanciando programmi in background e gestendoli) viene eseguito principalmente dalla shell. Tuttavia, è il terminale che gestisce combinazioni di tasti come Ctrl+C uccidere il lavoro in primo piano e Ctrl+Z sospenderlo.

 Riciclato da Unix e Linux 


120
2017-08-04 10:30



Non dovrei essere d'accordo con te sul terminale che è un termine appropriato per un file di dispositivo terminale e / o il codice di gestione del terminale nel kernel (tty ioctls, raw / cooked, editazione di linea di base). terminal = roba che gestisce i codici di escape, trasforma i tasti in caratteri e disegna su uno schermo (o stampa su carta / nastro). Vedi la mia risposta per maggiori dettagli. - Peter Cordes
@PeterCordes A questo livello di dettaglio, non c'è alcuna distinzione. POSIX definisce terminale anche come dispositivo terminale, nel senso di un file di dispositivo. Questo è il significato di Unix. Capita di essere il materiale che gestisce i codici di escape, trasforma i tasti in caratteri e disegna su uno schermo (o trasmette sulla rete, o registra in un file, ecc.). - Gilles
hrm, sì il terminale si abitua anche in questo senso. Partendo dal presupposto che ci sia un emulatore di terminale, o una porta seriale con un'appliance terminale collegata ad esso, su un'estremità del dispositivo terminale che il kernel sta gestendo. La gestione del kernel tty (in modalità cotta) gestisce solo alcuni codici di controllo (segnali su ^ c, line editing su ^ u / ^? (Delete). Sto cercando di tracciare una linea tra il codice tty e la parte di Linux che implementa un terminale simile a VT100 su una scheda grafica e una tastiera USB / ps2 / AT. Puoi compilare Linux senza, ma non senza tty. - Peter Cordes
@PeterCordes Nella configurazione del kernel, il supporto per i terminali può essere lasciato fuori (è utile per alcuni sistemi embedded rari in cui la memoria è estremamente stretta); è controllato da CONFIG_TTY. Supporto per emulatori di terminali (più propriamente detti pseudo terminali - "emulatore di terminale" non include sempre telnetd, schermo, expect, ...) è controllato da CONFIG_UNIX98_PTYS. Il supporto per il display in modalità testo PC e tastiera o simili è controllato da CONFIG_VT. Vedere drivers/tty/Kconfig nel sorgente del kernel. - Gilles
Oops, non avevo una fonte del kernel recente in giro. CONFIG_TTY è stato aggiunto solo nel 2012. Ad ogni modo, si spera che questo aiuti chiunque a cercare di capire quali sono i diversi pezzi del puzzle e come si adattano. - Peter Cordes


Una rappresentazione visiva.

terminale

enter image description here

Qualcosa su cui puoi sederti e lavorare come un capo.

consolle

enter image description here

Qualche hardware che fa un sacco di cose.

Un altro esempio di console, sarebbe una console per videogiochi come un Super Nintendo [dove puoi giocare Actraiser]

conchiglia

enter image description hereenter image description here

Fondamentalmente un'applicazione per l'esecuzione di comandi.

Riga di comando [Interfaccia]

enter image description hereenter image description here

Fondamentalmente qualsiasi cosa tu inserisca comandi.


52
2017-08-04 20:09



Hai rubato la mia idea - stavo per dare praticamente la stessa risposta. Quindi puoi avere un upvote. Il punto è ovviamente che mentre questi termini sono per lo più sinonimi in questi giorni, termini come "terminale" e "console" hanno le loro origini in concetti di calcolo più vecchi. - thomasrutter
Buon sforzo. Semplice e facile - A Umar Mukthar


Dal Linux Information Project:

terminale : Tecnicamente, una finestra di terminale, anche chiamata emulatore di terminale, è una finestra di solo testo in un'interfaccia utente grafica (GUI) che emula una console.

Nelle nostre parole Un'applicazione GUI, da cui possiamo accedere alla console di un utente.

consolle: un quadro strumenti contenente i controlli per un computer

Conchiglia : Una shell è un programma che fornisce la tradizionale interfaccia utente di solo testo per Linux e altri sistemi operativi simili a Unix

Riga di comando : Una riga di comando è lo spazio a destra del prompt dei comandi in modalità di visualizzazione tutto testo su un monitor del computer (in genere un pannello CRT o LCD) in cui un utente immette comandi e dati


19
2017-08-04 04:39



"Terminale" indica uno schermo solo testo fisico. Quello che dici è in realtà "emulatore di terminale". - Registered User
@RegisteredUser Un emulatore di terminale è un tipo di terminale. La parola terminale non è limitato ai terminali fisici (la solita parola per quello è consolle). - Gilles
Questa definizione di riga di comando è sbagliato. Una riga di comando non è limitata a una modalità di visualizzazione tutto testo. - Gilles
@Gilles L'ho preso da One web-Link. Hai menzionato la risposta corretta. - Ten-Coin
@AgentCool Non metto in discussione la tua capacità di copia-incolla. Metto in discussione la tua scelta della fonte. Ciò che pubblichi è una tua responsabilità, indipendentemente dal fatto che tu lo abbia scritto o meno. - Gilles


Le risposte qui sembrano molto buone. Tuttavia sono troppo asciutti e tecnici per i miei gusti, quindi darò una possibilità ..

Terminal è la fine di qualcosa - dove termina. Ad esempio se prendi la metropolitana in qualche città, la stazione in cui scendi è il tuo terminale. O in un aeroporto il luogo in cui le persone escono quando raggiungono il loro paese di destinazione è considerato il terminale. Il motivo per cui il terminal dell'aeroporto è al giorno d'oggi sia il luogo in cui si trovano le persone a bordo, sia il luogo in cui li si toglie dall'aereo è per ovvi motivi economici.

Lo scopo di un computer è quello di ottenere dati, fare qualcosa con esso e sputare il risultato. Quindi il terminale è qualsiasi dispositivo da cui è possibile ottenere il risultato del calcolo .. uno schermo per esempio. È appena successo che nei primi computer di solito si disponesse l'input (tastiera) e l'output (schermo) come un singolo dispositivo. A causa di ciò al giorno d'oggi i terminali sono considerati dispositivi di input / output. Un mouse, una tastiera, uno schermo, una telecamera, sono tutti terminali.

Shellè una cosa del sistema operativo. Su un computer hai il kernel che su Ubuntu per esempio è la parte Linux. Dato che il kernel è veramente di basso livello, viene fornita una shell - un programma che consente all'utente di interagire con il kernel in modo semplice. Questo è quello che BASH è ad esempio.

Console è (da un dizionario)

una superficie piatta che contiene i controlli per una macchina, per un pezzo   di materiale elettrico, ecc.

Ecco perché nell'industria musicale la tavola con tutte le manopole, o in uno space shuttle il tavolo di comando, sono tutte considerate console. Super Nintendo e PS2 sono anche chiamate storicamente console dal momento che i primi dispositivi di intrattenimento simili sembravano scatole con un gruppo di pulsanti su di essi.

Command line è solo un'interfaccia, l'opposto della GUI. Vale a dire ci sono due tipi di interfacce su un computer; CLI (interfaccia a riga di comando) e GUI (interfaccia utente grafica). La differenza principale è che il primo riceve input dalla tastiera mentre il secondo viene immesso dal mouse.


14
2017-08-06 10:40



Cosa intendi con "il contrario della GUI"? - Koray Tugay
Con opposto intendo che hai o CLI o GUI. Ho chiarito ora un po 'di più nella risposta. - Pithikos


Per riassumere la mia risposta:

Conchiglia è un programma che processes comandi e returns uscita, come bash in Linux.

terminale è un programma che run un conchiglia , in passato era a dispositivo fisico (Prima che i terminali fossero monitor con tastiere, lo erano telescriventi) e quindi il suo concetto è stato trasferito in Software , piace Gnome-terminal .

Quindi apro Gnome-terminal , appaiono finestre nere che corrono Conchiglia quindi posso eseguire i miei comandi.

La console è a tipo speciale di terminale , era anche un dispositivo fisico. esempio in Linux che abbiamo virtual console a cui posso accedere tramite combinazione di Ctrl + alt + Da F1 a F7 .

consolle a volte significa tastiera e monitor fisicamente collegato a questo computer.


7
2017-08-05 11:59





Questi termini vanno spesso insieme, quindi le persone usano uno dei termini per fare riferimento alla collezione. (di solito è ovvio dal contesto che significano una finestra di terminale che fornisce un'interfaccia a una shell della riga di comando).

Per evitare che questo diventi prolisso, dirò xterm come sostituto per XTerm / Gnome Terminal / Konsole / mrxvt / etc / ecc. Lo stesso per bash.

consolle ha molti altri significati specifici, quindi lasciatelo fuori per ora.

terminale: Qualcosa che fornisce interazione umana con i programmi attraverso un flusso bidirezionale di ASCII / UTF8 / altri caratteri, in genere con VT100 o analoghi processi di escape code. Ad esempio, backspace, delete, tasti freccia, ecc. Generano codici di escape I programmi possono stampare i codici di escape per spostare il cursore sullo schermo del terminale, passare al grassetto e / o al colore, cancellare o scorrere lo schermo, ecc. i vecchi tempi, questo era spesso un apparecchio dedicato con uno schermo e una tastiera e una porta seriale. Ora, di solito è un programma come xterm.

Ci sono file di dispositivo per programmi da leggere / scrivere da / a terminali, e terminali virtuali hanno anche l'altro lato accessibile come un file di dispositivo. Qui è dove xterm scrive il tuo input in modo che bash possa leggerlo.

Ogni terminale, inclusi quelli virtuali, fornisce un editing di base della linea quando è in modalità di cottura (al contrario di raw). Questo è gestito dal codice del kernel. È il bash che fornisce la modifica della riga che puoi fare con i tasti freccia. (Prova a correre cat e digitando se vuoi vedere come è la modifica di base del kernel. Backspace funziona, e un paio di altre cose secondo le tue impostazioni stty.)

Anche se c'è un sacco di codice del kernel dietro ai dispositivi terminali, si farebbe riferimento al codice di gestione del terminale, non come un terminale stesso.

Edit: Gilles mi ha convinto che riferirsi a un tty come terminale è un uso corretto. Gli emulatori di terminale e i programmi interattivi che vengono eseguiti collegati a un terminale dipendono tutti dalla semantica terminale implementata dal kernel. (La maggior parte di questo comportamento è standardizzata da POSIX ed è la stessa su Linux / * BSD / altri Unix.) Un editor di testo a schermo intero dipende dal comportamento di roba Unix tty e dalla gestione del codice di escape del movimento del cursore, e molte altre caratteristiche dell'emulatore di terminale.

Tuttavia, un VT100 fisico con schermo, tastiera e porta seriale è un'istanza di un terminale. Non richiede che un kernel Unix all'altra estremità della sua porta seriale sia completo. Qualcosa di completamente diverso potrebbe essere inviare codici di escape e testo ASCII, e ricevere lo stesso da esso. Sarebbe solo un VT100, non un terminale Unix. Un emulatore di terminale più la semantica Unix tty costituiscono il pacchetto completo di un terminale Unix su cui normalmente gira un programma come bash.

Riga di comando è uno stile di interfaccia utente, in cui digiti qualcosa, quindi premi Invio per far accadere qualcosa. È anche usato come una scorciatoia per una shell da riga di comando, come bash o MS-DOS, ma puoi anche dire "è uno strumento da riga di comando" su qualcosa come fdisk. Considerando solo i programmi che utilizzano un terminale per l'interfaccia utente, le due famiglie principali sono la riga di comando e il testo a schermo intero (ad esempio un editor come vi o emacs -nw).

I programmi a riga di comando che normalmente funzionano sui terminali funzionano quasi sempre con i loro input e output reindirizzati ai file, ma i programmi a schermo intero basati su terminale come editor o client di posta elettronica sono solo interattivi e non funzionano.

UN conchiglia è un programma per l'avvio di altri programmi. In un contesto Unix, è comune significare shell a riga di comando (ad esempio shell Bourne o equivalente a shell C). Le shell Unix possono anche leggere il loro input da file, ad esempio gli script di shell. Sono linguaggi di programmazione completi, con variabili, loop e condizionali, e molti programmi sono scritti in bash (o solo con il /bin/sh Caratteristiche della shell POSIX, per una maggiore portabilità). È anche possibile scrivere velocemente for i in *.something; do some_program "$i";done  in una shell interattiva.

Mettendo tutto insieme, una shell come bash (o qualsiasi programma avviato con un comando shell) riceverà caratteri dal /dev/pts/N dispositivo terminale dopo che xterm scrive l'input nel suo lato dello pseudo-terminale. Se corri cat, quindi colpisci ^c, il codice tty del kernel agirà sul ^c e inviare a SIGINT al processo in primo piano su quel terminale. (Nota l'uso di terminale in questo contesto significare Unix tty, non un emulatore di terminale o qualcosa collegato a una porta seriale.) Questo accade perché la shell pone il terminale in modalità "cotta" prima di iniziare qualsiasi programma, il che significa che il kernel agisce su alcuni controlli. sequenze. (Il codice tty non ha ancora nulla a che fare con la gestione dei codici di escape VT100, solo alcuni codici di controllo a bassa ASCII.) Se invece di un xterm, si utilizza il terminale di testo della console Linux, quindi il kernel sta eseguendo l'emulazione VT100 e gestendo tutte quelle cose. Linux può essere compilato senza supporto per il terminale di testo della console virtuale, ma non senza il supporto di tty.

consolle a volte è usato come sinonimo di terminale (KDE ha anche un emulatore di terminale chiamato Konsole).

Come sottolinea 0xSheepdog, ha anche un altro significato: hardware di interazione umana localmente collegato.

In un contesto del kernel, la console ha un altro significato specifico: è il terminale in cui vengono scritti i messaggi di avvio. Questa può essere una porta seriale. Normalmente, naturalmente, è la console di testo implementata dal kernel in cima ai driver per l'hardware grafico e le tastiere USB / ps2 / AT. Se si avvia Linux con console=tty0 console=ttyS0,115200n8 sulla riga di comando, riceverai i messaggi del kernel sullo schermo E sulla porta seriale.

Linux implementa console virtuali (/dev/tty1 a N). Puoi cambiare con quale schermo fisico / tastiera stai controllando Ctrl+alt+FN. Tipiche distribuzioni Linux creano 6 e iniziano getty su tutti, quindi, anche se non puoi o non vuoi avviare X11, puoi effettuare il login 6 volte e passare da un comando a una pagina man e qualsiasi altra cosa, senza eseguire un programma come lo schermo. Linux (il kernel) include un emulatore di terminale in stile VT100 per fornire un'interfaccia terminale attraverso lo schermo e la tastiera sulle console virtuali.

I 6 terminali virtuali standard con prompt di accesso sono il motivo Ctrl+alt+F7 ti riporta alla tua sessione X11: il server X afferra la prossima console virtuale disponibile. (Si apre il server X. /dev/input/... direttamente, piuttosto che premere i tasti /dev/tty7, anche se.)

Quindi "passare a una console di testo" significa premere Ctrl+alt+F1 e usa quel terminale. Quando i computer erano lenti e non avevano molta RAM, alcune persone passavano molto del loro tempo sulle console di testo, dato che erano veloci, si poteva impostare un font carino e persino cambiare le dimensioni del terminale per avere caratteri più piccoli, ma avere più sullo schermo in una volta. alt+Sinistra e alt+Destra scambia per prev / next console. (X11 disabilita questo per la sua console, ovviamente, lasciando solo il Ctrl+alt+FN combo.)

Così consolle è l'unico di questi termini che non ha un singolo significato tecnico ben definito. Ne ha un paio in più. (A seconda di come ti senti sul terminale corretto rispetto al terminale più sulla gestione del tty, potresti dire che il terminale ha anche più significati.)


7
2017-08-05 09:16



consolle il che significa che il terminale fisico "principale" non è solo in un contesto del kernel. È lo stesso senso in /dev/console. consolle non è particolarmente ambiguo - anche se occasionalmente è usato nel senso più generale di terminale, è piuttosto raro (più raro di terminale essere usato per significare specificamente una console). - Gilles
giusto, sì, echo foo | sudo tee / dev / console> / dev / null verrà stampato sullo schermo, se il tuo VT corrente è in modalità testo (inclusa la console framebuffer, non solo letteralmente VGA textmode). Se avvii con la console su una porta seriale, penso che andrebbe lì. Si può dire che / dev / consenti il ​​file del dispositivo per qualunque cosa il kernel stia trattando come console di sistema. Nient'altro nel sistema ha bisogno di avere una nozione di esistenza di una console tty (eccetto per il recupero da avvio che avvia una shell sulla console TTY se il sistema non riesce ad avviarsi in modalità multiutente. - Peter Cordes
Il server xorg X (stringhe / usr / bin / Xorg) non usa / dev / console per ottenere l'accesso all'hardware. Usa / dev / tty0 e / dev / tty% d, e / dev / vc /% d, per impostarsi sul proprio VT. Sono abbastanza sicuro che Xorg funzionerebbe ancora bene su un PC che si avviava con la console del kernel su una porta seriale. E che i terminali virtuali in modalità testo funzionerebbero ancora. Più lo considero, più mi sto orientando verso la visualizzazione della console in un contesto del kernel come solo un terminale speciale, selezionato al momento dell'avvio. (Linux può effettivamente inviare i suoi messaggi di console su più terminali contemporaneamente, se lo chiedi.) - Peter Cordes


Penso che nei primi tempi dei computer con condivisione del tempo, ogni utente avesse un terminale (quando poteva ottenerlo!), Ma solo gli operatori di sistema avevano una console. La console può essere utilizzata per attività come il riavvio della macchina o la diagnostica di sistema che non erano possibili dai terminali utente. La console era nella sala macchine, una parte intrinseca del computer, mentre i terminali potevano essere remoti. La console includerebbe anche luci e interruttori hardware, non solo input e output di testo.

Direi che la riga di comando è un'area in cui un utente può digitare un comando, mentre la shell è il programma che interpreta / obbedisce a quel comando. Il termine "shell" è molto particolare per i derivati ​​Unix; "command-line" è più nella tradizione Windows / DOS. L'equivalente sui mainframe è solitamente chiamato "linguaggio di controllo del lavoro".

Chiaramente, queste distinzioni originali si sono offuscate nel tempo man mano che la tecnologia cambia.


5
2017-08-04 22:35





Cercando una risposta breve incentrata sull'utente:

riga di comando - la riga in cui inserisci i comandi. Di solito si diceva che è necessario eseguire qualcosa nella finestra in modalità testo (interfaccia a riga di comando) fornita dal proprio sistema operativo.

conchiglia - il programma reale eseguito dal sistema operativo per elaborare le cose che inserisci command line. Da qui il nome - shell user-friendly per il core del SO non amichevole. Fornisce prompt dei comandi, come $ o >, esegue i propri comandi e app. Lavorate sempre attraverso il shell programma e non operare mai direttamente con console o terminale.

consolle - è una finestra in cui sono in esecuzione i programmi in modalità testo. Questa finestra elabora le pressioni dei tasti, sa che è larghezza e altezza. Può essere a schermo intero.

terminale - è un dispositivo con display per umani che accetta flussi di input di caratteri e li mostra. Non ci sono feedback per l'utente su altezza o larghezza (solo hack) o tasti premuti con la tastiera - solo i caratteri ci stanno viaggiando. Terminal elabora sequenze speciali in questo stream per rendere le cose colorate, ripulire lo schermo e fare altre cose cattive. I terminali sono traballanti, perché è facile rovinare le cose se il file che si sta canalizzando per l'output contiene sequenze speciali. Sono popolari nelle interfacce di debug di rete e dispositivo, perché è sufficiente un unico flusso per inviare l'output e controllare il dispositivo di output e si può semplicemente tap in conversazione senza la necessità di inizializzare o creare una finestra.

console seriale - è una console che elabora il flusso di input come un terminale.


3
2017-10-24 10:42





Questo è un argomento vago, perché i termini sono molto ambigui. Raccomando vivamente di leggere i link che ho fornito in questa risposta, che sono anche le mie fonti per questa risposta.

UN conchiglia è lo strato sopra il kernel:

  • Interpreta i comandi inseriti dall'utente e li elabora. La shell ha accesso al kernel, a differenza degli utenti. Gli utenti possono accedere al kernel solo immettendo comandi usando una shell e usando i processi (cioè programmi in esecuzione). I programmi usano chiamate di sistema per accedere alle funzionalità del kernel. Tutte le chiamate di sistema insieme formano l'API di sistema.
  • Esempi di shell sono forniti nella seconda definizione di terminale.

UN terminale ha molti significati:

  • (1) A terminale di testo. Questa è la combinazione di un monitor e una tastiera. Un cavo ha collegato il terminale al computer (spesso indirettamente). È stato chiamato terminale poiché si trovava all'estremità terminale di questo cavo. Solitamente questi terminali erano fisicamente separati dal computer, perché nel passato molti terminali erano collegati a un singolo mainframe / computer, in modo che più utenti potessero avere accesso al computer allo stesso tempo.
  • (2) A finestra del terminale anche noto come emulatore di terminale. In Linux, una finestra di terminale è l'emulazione di una console, contenuta in una finestra della GUI. È la CLI in cui scrivi il tuo testo, e questo input viene letto dalla shell che stai usando. Esistono molti tipi di shell (ad esempio bash, dash, ksh88) e terminali (ad esempio konsole, gnome).
  • (3) Per una spiegazione su terminali pseudo, vista Questo. Si tratta di una coppia di due "file di dispositivo" utilizzati per la comunicazione tra un processo e un emulatore di terminale.

UN consolle ha molti significati:

  • (1) un quadro strumenti contenente i comandi per un computer.
  • (2) A Console di sistema anche noto come console del computer. Questa è la combinazione del monitor del display e di una tastiera collegata a un computer. Questo è sinonimo di ciò che chiamiamo "terminale di testo". A volte anche altre periferiche di input dell'utente come un mouse fanno parte di una console.
  • (3) Un'interfaccia della riga di comando che copre l'intero schermo. Ciò è in contrasto con una finestra di terminale, che è una GUI con una X nell'angolo in alto a destra per chiuderla. Queste sono le due modalità di visualizzazione per CLI (interfacce della riga di comando) in sistemi simil-Unix. Analogamente a una finestra di terminale, la console può eseguire anche molte shell.

Spesso, i sistemi operativi consentono di eseguire più console su una console fisica (definizione della console 2). Questi sono chiamati console virtuali anche noto come terminali virtuali, e si può accedere attraverso ctrl + alt + Fx combinazioni. Ad esempio, se si desidera aprire la 3a console virtuale, si utilizza la combinazione ctrl + alt + F3.

Le console (definizione 3) potrebbero apparire come un anacronismo, ma gli esperti dovrebbero essere a loro agio nell'utilizzarle, dato che ci sono molti sistemi operativi che non supportano le GUI. Inoltre, se una GUI non risponde, la console potrebbe ancora funzionare.


3
2017-12-03 05:13