Questão Qual é a diferença entre Terminal, Console, Shell e Linha de Comando?


Qual é a diferença entre Terminal, Console, Shell e Linha de Comando?


173
2017-08-04 04:35


origem


(1/2) O agente Cool está correto na maior parte, mas a definição de Console que ele fornece é desatualizada, dado este tópico. Seu link tem as informações corretas, se você segui-lo embora. Leia o todo definição no seu link. O console é usado livremente para significar muitas coisas semelhantes, mas o mais importante, geralmente, refere-se aos dispositivos de entrada e saída humanos LOCAL ANEXOS, por ex. teclado, display e talvez mouse. - 0xSheepdog
(2/2) Isso pode parecer um ponto pedante, mas como um sistema moderado, eu vou te dizer não é. Quando um sistema tem um problema e parece estar completamente travado / inativo / off-line, você deve verificar console físico do sistema para ver se ainda está funcionando, mas simplesmente perdeu a conectividade de rede. Esse pequeno detalhe pode economizar ou custar-lhe dados, processamento de informações, etc. Pedante, sim. Mas importante. - 0xSheepdog
@ 0xSheepdog Você pode querer expandir esses comentários para uma resposta completa (incluindo definições ou explicações para os outros termos também), postados como tal. Não é ruim para uma pergunta ter várias respostas (exceto, talvez, quando elas transmitem exatamente as mesmas informações e da mesma maneira). Não sei por que a importante prática de verificar uma máquina localmente depende de saber / chamar sua interface física humana de console, mas talvez haja um argumento de que é importante para uma comunicação eficaz com colegas ou o uso de documentação. (Você pode esclarecer isso em sua resposta.) - Eliah Kagan
Devido à sua estreita relação (veja todas as boas respostas), esses termos são às vezes usados ​​como sinônimos, o que provavelmente é o que nos levou a perguntar isso. - Mark
Vejo: Qual é a diferença exata entre um 'terminal', um 'shell', um 'tty' e um 'console'? no Unix & LinuxSE. - Piotr Dobrogost


Respostas:


A resposta curta é que

  • terminal = ambiente de entrada / saída de texto
  • console = terminal físico
  • shell = interpretador de linha de comando

Console e terminal estão intimamente relacionados. Originalmente, eles significavam um equipamento pelo qual você poderia interagir com um computador: nos primeiros dias do unix, isso significava teleprinterdispositivo de estilo parecido com uma máquina de escrever, às vezes chamado de teletypewriter, ou "tty" em taquigrafia. O nome “terminal” veio do ponto de vista eletrônico e o nome “console” do ponto de vista do móvel. Muito cedo na história do unix, teclados e displays eletrônicos tornaram-se a norma para os terminais.

Na terminologia do unix, um terminal é um tipo particular de arquivo de dispositivo que implementa vários comandos adicionais (ioctls) além de ler e escrever. Alguns terminais são fornecidos pelo kernel em nome de um dispositivo de hardware, por exemplo, com a entrada proveniente do teclado e a saída indo para uma tela de modo de texto, ou com a entrada e a saída transmitidas através de uma linha serial. Outros terminais, às vezes chamados de pseudo-terminais ou pseudo-ttys, são fornecidos (através de uma camada fina de kernel) por programas chamados emuladores de terminal. Alguns tipos de emuladores de terminal incluem:

  • Aplicativos GUI em execução no X Window System: Xterm, Terminal Gnome, Konsole, Terminator, etc.
  • Tela e tmux, que fornece uma camada de isolamento entre um programa e outro terminal
  • Ssh, que conecta um terminal em uma máquina com programas em outra máquina
  • Espero, para interações terminais de script

A palavra terminal Também pode ter um significado mais tradicional de um dispositivo através do qual um interage com um computador, normalmente com um teclado e exibição. Por exemplo, um terminal X é um tipo de cliente magro, um computador para fins especiais cuja única finalidade é acionar um teclado, monitor, mouse e ocasionalmente outros periféricos de interação humana, com os aplicativos reais sendo executados em outro computador mais potente.

UMA console geralmente é um terminal no sentido físico que é, por alguma definição, o terminal primário diretamente conectado a uma máquina. O console aparece para o sistema operacional como um terminal (implementado pelo kernel). Em alguns sistemas, como Linux e FreeBSD, o console aparece como vários terminais (ttys) (combinações de teclas especiais alternam entre esses terminais); apenas para confundir as coisas, o nome dado a cada terminal em particular pode ser "console", "console virtual", "terminal virtual" e outras variações.

Veja também Por que um terminal virtual é “virtual” e o que / por que / onde é o terminal “real”?.


UMA linha de comando é uma interface em que o usuário digita um comando (que é expresso como uma sequência de caracteres - geralmente um nome de comando seguido por alguns parâmetros) e pressiona Retorna chave para executar esse comando.

UMA Concha é a interface principal que os usuários veem quando efetuam login, cuja finalidade principal é iniciar outros programas. (Eu não sei se a metáfora original é que o shell é o ambiente doméstico para o usuário, ou que o shell é o que outros programas estão executando.)

Em círculos unix, Concha se especializou para significar um shell de linha de comando, centrado em torno de inserir o nome do aplicativo que deseja iniciar, seguido pelos nomes dos arquivos ou outros objetos que o aplicativo deve atuar e pressionando a tecla Enter. Outros tipos de ambientes (com a notável exceção recente do Gnome Shell) geralmente não usam a palavra “shell”; por exemplo, sistemas de janela envolvem “gerenciadores de janelas”E“ambientes de desktop”, Não um“ shell ”.

Existem muitos shells unix diferentes. O shell padrão do Ubuntu é Festança (como a maioria das outras distribuições Linux). Alternativas populares incluem zsh (que enfatiza poder e capacidade de personalização) e peixe (que enfatiza a simplicidade).

Shells de linha de comando incluem construções de controle de fluxo para combinar comandos. Além de digitar comandos em um prompt interativo, os usuários podem escrever scripts. Os shells mais comuns têm uma sintaxe comum baseada no Bourne_shell. Ao discutir “programação shell”, A casca é quase sempre implícita como uma casca ao estilo Bourne. Alguns shells que são freqüentemente usados ​​para scripts, mas não possuem recursos interativos avançados incluem o escudo Korn (ksh) e muitos cinza variantes. Praticamente qualquer sistema semelhante ao Unix tem um shell estilo Bourne instalado como /bin/shnormalmente cinza, ksh ou bash. No Ubuntu, /bin/sh é Traço, uma variante de cinza (escolhida porque é mais rápida e usa menos memória que o bash).

Na administração do sistema unix, um usuário Concha é o programa que é chamado quando eles efetuam login. As contas de usuário normais têm um shell de linha de comando, mas os usuários com acesso restrito podem ter um concha restrita ou algum outro comando específico (por exemplo, para contas somente de transferência de arquivos).


A divisão do trabalho entre o terminal e a casca não é completamente óbvia. Aqui estão suas principais tarefas.

  • Entrada: o terminal converte as chaves em sequências de controlo (por ex. Esquerda → \e[D). A concha converte sequências de controlo em comandos (por ex. \e[D → backward-char).
  • Edição de linha, histórico de entrada e conclusão são fornecidos pelo shell.
    • O terminal pode fornecer sua própria edição de linha, histórico e conclusão, e apenas enviar uma linha para o shell quando estiver pronto para ser executado. O único terminal comum que opera dessa maneira é M-x shellno Emacs.
  • Saída: o shell emite instruções como “display foo"," Mudar a cor do primeiro plano para verde "," mover o cursor para a próxima linha ", etc. O terminal atua com essas instruções.
  • O prompt é puramente um conceito de shell.
  • O shell nunca vê a saída dos comandos que executa (a menos que seja redirecionado). O histórico de saída (rolagem) é puramente um conceito terminal.
  • O copy-paste entre aplicativos é fornecido pelo terminal (geralmente com o mouse ou sequências de teclas, como Ctrl+Mudança+V ou Mudança+Inserir). O shell pode ter também o seu próprio mecanismo interno de copiar e colar (por ex. Meta+W e Ctrl+Y).
  • Controle de trabalho (executar programas em segundo plano e gerenciá-los) é principalmente executado pelo shell. No entanto, é o terminal que lida com combinações de teclas como Ctrl+C para matar o trabalho de primeiro plano e Ctrl+Z para suspendê-lo.

 Reciclado de Unix e Linux 


120
2017-08-04 10:30



Eu teria que discordar de você no terminal sendo um termo apropriado para um arquivo de dispositivo de terminal e / ou o código de manipulação de terminal no kernel (tty ioctls, raw / cooked, edição básica de linha). terminal = o material que manipula os códigos de escape, transforma os pressionamentos de tecla em caracteres e desenha em uma tela (ou imprime em papel / fita). Veja minha resposta para mais detalhes. - Peter Cordes
@PeterCordes Neste nível de detalhe, não há distinção. POSIX define terminal como sinônimo de dispositivo terminal, no sentido de um arquivo de dispositivo. Esse é o significado do Unix. Acontece que ela é o material do que manipula os códigos de escape, transforma os pressionamentos de tecla em caracteres e desenha em uma tela (ou transmite através da rede, ou registra em um arquivo, etc.). - Gilles
hrm, sim terminal também é usado nesse sentido. Com a suposição de que há um emulador de terminal ou uma porta serial com um dispositivo de terminal conectado a ele, em uma extremidade do dispositivo de terminal que o kernel está manipulando. O manuseio do kernel tty (no modo cozido) lida apenas com alguns códigos de controle (sinais em ^ c, edição de linha em ^ u / ^? (Delete). Estou tentando desenhar uma linha entre o código tty e a parte do Linux que implementa um terminal tipo VT100 em uma placa gráfica e um teclado USB / ps2 / AT Você pode compilar o Linux sem isso, mas não sem tty. - Peter Cordes
@PeterCordes Na configuração do kernel, o suporte para terminais pode ser deixado de fora (é útil para alguns sistemas incorporados raros em que a memória é extremamente compacta); é controlado por CONFIG_TTY. Suporte para emuladores de terminal (mais propriamente chamados de pseudo terminais - o “emulador de terminal” nem sempre inclui telnet, tela, espera,…) é controlado por CONFIG_UNIX98_PTYS. Suporte para exibição de modo de texto do PC e teclado ou similar é controlado por CONFIG_VT. Vejo drivers/tty/Kconfig na fonte do kernel. - Gilles
Opa, eu não tinha uma fonte recente do kernel por aí. O CONFIG_TTY só foi adicionado em 2012. De qualquer forma, sim, espero que ajude alguém tentando entender o que são as diferentes peças do quebra-cabeça e como elas se encaixam. - Peter Cordes


Uma representação visual.

terminal

enter image description here

Algo que você pode sentar e trabalhar como um chefe.

Console

enter image description here

Algum hardware que faz um monte de coisas.

Outro exemplo de console, seria um console de videogame como o Super Nintendo [onde você pode jogar o Actraiser]

Concha

enter image description hereenter image description here

Basicamente, uma aplicação para executar comandos.

Interface da Linha de comando]

enter image description hereenter image description here

Basicamente, qualquer coisa que você inserir comandos.


52
2017-08-04 20:09



Você roubou minha ideia - eu daria basicamente a mesma resposta. Então você pode ter um upvote. A questão é que, embora esses termos sejam em sua maioria sinônimos hoje em dia, termos como "terminal" e "console" têm suas origens em conceitos de computação mais antigos. - thomasrutter
Bom esforço. Simples e fácil - A Umar Mukthar


De Projeto de Informação Linux:

terminal Tecnicamente, uma janela de terminal, também conhecida como emulador de terminal, é uma janela somente texto em uma interface gráfica do usuário (GUI) que emula um console.

Em Nossas Palavras Uma Aplicação GUI, de onde podemos acessar o console de um usuário.

Console: um painel de instrumentos contendo os controles para um computador

Concha : Um shell é um programa que fornece a interface de usuário tradicional, somente texto, para Linux e outros sistemas operacionais semelhantes ao Unix.

Linha de comando : Uma linha de comando é o espaço à direita do prompt de comando em um modo de exibição de texto completo em um monitor de computador (geralmente um painel CRT ou LCD) no qual um usuário digita comandos e dados


19
2017-08-04 04:39



"Terminal" significa uma tela somente de texto físico. O que você diz é na verdade "emulador de terminal". - Registered User
@RegisteredUser Um emulador de terminal é um tipo de terminal. A palavra terminal não se limita aos terminais físicos (a palavra usual para isso é console). - Gilles
Esta definição de linha de comando está errado. Uma linha de comando não está limitada a um modo de exibição de texto completo. - Gilles
@Gilles eu peguei de um link da web. Você mencionou a resposta correta. - Ten-Coin
@AgentCool Não questiono sua capacidade de copiar e colar. Eu questiono sua escolha de fonte. O que você postar é de sua responsabilidade, quer você o tenha escrito ou não. - Gilles


As respostas aqui parecem muito boas. No entanto, eles são muito secos e técnicos para o meu gosto, então eu vou dar uma olhada ..

Terminal é o fim de algo - onde termina. Por exemplo, se você pegar o metrô em alguma cidade, a estação onde você descerá é o seu terminal. Ou em um aeroporto, o lugar onde as pessoas saem quando chegam ao país de destino é considerado o terminal. A razão pela qual o terminal no aeroporto hoje em dia é o lugar onde você leva as pessoas a bordo e o lugar onde você as tira do avião é por razões econômicas óbvias.

O propósito de um computador é obter dados, fazer algo com eles e cuspir o resultado. Assim, o terminal é qualquer dispositivo de onde você pode obter o resultado do cálculo .. uma tela, por exemplo. Aconteceu que nos primeiros computadores você normalmente tinha a entrada (teclado) e a saída (tela) como um único dispositivo. Por causa disso, atualmente os terminais são considerados dispositivos de entrada / saída. Um mouse, teclado, tela, câmera, são todos terminais.

Shellé uma coisa de OS. Em um computador você tem o kernel, que no Ubuntu, por exemplo, é a parte do Linux. Agora, como o kernel é realmente de baixo nível, um shell é fornecido - um programa que permite ao usuário interagir com o kernel de maneira fácil. É isso que BASH é por exemplo.

Console é (de um dicionário)

uma superfície plana que contém os controles para uma máquina, para uma peça   de equipamentos elétricos, etc.

É por isso que na indústria musical a prancha com todos os botões, ou em um ônibus espacial a mesa de comando, todos eles são considerados consoles. Super Nintendo e PS2 também são chamados de consoles historicamente, já que os primeiros aparelhos de entretenimento pareciam caixas com vários botões.

Command line é apenas uma interface - o oposto da GUI. Ou seja, existem dois tipos de interfaces em um computador; CLI (interface de linha de comando) e GUI (interface gráfica com o usuário). A principal diferença é que o primeiro recebe entrada do teclado enquanto o segundo recebe entrada do mouse.


14
2017-08-06 10:40



O que você quer dizer com "o oposto da GUI"? - Koray Tugay
Com o oposto, quero dizer que você tem CLI ou GUI. Eu esclareci agora um pouco mais na resposta. - Pithikos


Para resumir minha resposta:

Concha é um programa que processes comandos e returns saída, como festança no Linux.

terminal é um programa que run uma Concha , no passado, era um dispositivo físico (Antes de terminais eram monitores com teclados, eles eram teletipos) e então seu conceito foi transferido para Programas , gostar Gnomo-Terminal .

Então eu abro Gnomo-Terminal , aparecem janelas pretas que funcionam Concha então eu posso executar meus comandos.

Console é um tipo especial de terminal também foi um dispositivo físico. exemplo no Linux temos virtual console que eu posso acessá-los por combinação de Ctrl + Alt + F1 a F7 .

Console às vezes significa o teclado e monitor fisicamente anexado a este computador.


7
2017-08-05 11:59





Esses termos geralmente andam juntos, então as pessoas usam um dos termos para se referir à coleção. (isto é, normalmente é óbvio do contexto que eles significam uma janela de terminal fornecendo uma interface para um shell de linha de comando).

Para evitar que isso se prolongue, vou apenas dizer que o xterm é um substituto para Terminal XTerm / Gnome / Konsole / mrxvt / etc / etc. O mesmo vale para o bash.

Console tem vários outros significados específicos, então deixe isso de lado por enquanto.

terminal: Algo que fornece interação humana com programas através de um fluxo bidirecional de caracteres ASCII / UTF8 / outros, geralmente com VT100 ou processamento de código de escape semelhante. (Por exemplo, retrocesso, excluir, teclas de seta, etc. geram códigos de escape. Os programas podem imprimir códigos de escape para mover o cursor pela tela do terminal, alternar para texto em negrito e / ou cor, limpar ou rolar a tela etc.). Nos velhos tempos, esse era um dispositivo dedicado com tela, teclado e porta serial. Agora, geralmente é um programa como o xterm.

Existem arquivos de dispositivos para programas de leitura / gravação de / para terminais, e terminais virtuais também têm o outro lado acessível como um arquivo de dispositivo. É aqui que o xterm escreve sua entrada para que o bash possa lê-lo.

Cada terminal, incluindo os virtuais, fornece edição de linha básica quando está no modo cozido (em oposição ao cru). Isso é tratado pelo código do kernel. É o bash que fornece a edição de linha que você pode fazer com as teclas de seta. (Tente correr cat e digitando se você quiser ver como é a edição de linha básica fornecida pelo kernel. Backspace funciona, e algumas outras coisas de acordo com suas configurações stty.

Mesmo que haja muito código do kernel por trás dos dispositivos terminais, ele seria referido como código de manipulação de terminais, não como um terminal em si.

Edit: Gilles me convenceu de que referindo-se a um tty como um terminal é o uso adequado. Emuladores de terminal e programas interativos executados conectados a um terminal dependem da semântica de terminal implementada pelo kernel. (A maior parte desse comportamento é padronizada pelo POSIX, e é a mesma em Linux / * BSD / outro Unix.) Um editor de texto em tela cheia depende do comportamento das coisas do Unix, bem como do manuseio do código de escape do movimento do cursor. e muitos outros recursos, do emulador de terminal.

No entanto, um VT100 físico com tela, teclado e porta serial é uma instância de um terminal. Ele não requer que um kernel Unix na outra extremidade de sua porta serial esteja completo. Algo completamente diferente poderia estar enviando códigos de escape e texto ASCII, e recebendo o mesmo a partir dele. Seria apenas um VT100, não um terminal Unix. Um emulador de terminal mais a semântica Unix tty compõem o pacote completo de um terminal Unix em que um programa como o bash normalmente é executado.

Linha de comando é um estilo de interface do usuário, onde você digita algo e, em seguida, pressione Enter para fazer algo acontecer. Ele também é usado como um atalho para um shell de linha de comando, como o bash ou o MS-DOS, mas você também pode dizer "é uma ferramenta de linha de comando" sobre algo como o fdisk. Considerando apenas os programas que usam um terminal para sua interface do usuário, as duas principais famílias são a linha de comando e o texto em tela cheia (por exemplo, um editor como vi ou emacs -nw).

Programas de linha de comando que normalmente são executados em terminais quase sempre funcionam com suas entradas e saídas redirecionadas para arquivos, mas programas de tela cheia baseados em terminal, como editores ou clientes de e-mail, são interativos e não funcionam.

UMA Concha é um programa para iniciar outros programas. Em um contexto Unix, é comum significar shell de linha de comando (ou seja, shell Bourne ou equivalente ao shell C). Unix shells também podem ler suas entradas de arquivos, ou seja, scripts de shell. Eles são linguagens de programação completas, com variáveis, loops e condicionais, e muitos programas são escritos em bash (ou com apenas /bin/sh Recursos de shell POSIX, para mais portabilidade). Também é fácil escrever um rápido for i in *.something; do some_program "$i";done  em um shell interativo.

Juntando tudo, um shell como o bash (ou qualquer programa que você tenha iniciado executando um comando shell) receberá caracteres do /dev/pts/N terminal após o xterm gravar sua entrada em seu lado do pseudo-terminal. Se você correr cat, então aperte ^c, o código tty do kernel vai agir no ^c e envie um SIGINT para o processo em primeiro plano nesse terminal. (Observe o uso de terminal neste contexto significa o Unix tty, não um emulador de terminal ou algo ligado a uma porta serial.) Isso acontece porque o shell coloca o terminal em modo "cozido" antes de iniciar qualquer programa, o que significa que o kernel age em algum controle. seqüências. (O código tty ainda não tem nada a ver com o tratamento de códigos de escape VT100, apenas alguns códigos de controle ASCII.) Se, em vez de um xterm, você estiver usando o terminal de texto do console Linux, o kernel estará executando a emulação VT100 e lidar com todas essas coisas. O Linux pode ser compilado sem o suporte do terminal de texto do console virtual, mas não sem o suporte tty.

Console às vezes é usado como sinônimo de terminal (o KDE até tem um emulador de terminal chamado Konsole).

Como aponta 0xSheepdog, também tem outro significado: hardware de interação humana conectado localmente.

Em um contexto de kernel, o console tem outro significado específico: é o terminal onde as mensagens de boot são gravadas. Esta pode ser uma porta serial. Normalmente, é claro, é o console de texto implementado pelo kernel sobre os drivers para hardware gráfico e teclados USB / ps2 / AT. Se você inicializar o Linux com console=tty0 console=ttyS0,115200n8 na linha de comando, você receberá mensagens do kernel em sua tela E na porta serial.

Linux implementa consoles virtuais (/dev/tty1 para N). Você pode trocar o que sua tela física / teclado está controlando com Ctrl+Alt+FN. As distribuições típicas do Linux criam 6 e iniciam getty em todos eles, então, mesmo que você não possa ou não queira iniciar o X11, você pode fazer login 6 vezes e alternar entre um comando, uma página man e qualquer outra coisa, sem executar um programa como a tela. O Linux (o kernel) inclui um emulador de terminal estilo VT100 para fornecer uma interface de terminal através de sua tela e teclado nos consoles virtuais.

Os 6 terminais virtuais padrão com solicitações de login são o motivo Ctrl+Alt+F7 leva você de volta à sua sessão do X11: o servidor X captura o próximo console virtual disponível. (O servidor X é aberto /dev/input/... diretamente, ao invés de obter seus pressionamentos de tecla de /dev/tty7, Apesar.)

Então "trocar para um console de texto" significa pressionar Ctrl+Alt+F1 e use esse terminal. Quando os computadores eram lentos e não tinham muita memória RAM, algumas pessoas passavam muito tempo nos consoles de texto, já que eram rápidos, você podia definir uma fonte legal e até mesmo alterar o tamanho do terminal para ter caracteres menores, mas mais na tela de uma só vez. Alt+Esquerda e Alt+Certo Troque para o console anterior / seguinte. (X11 desativa isso para o seu console, é claro, deixando apenas o Ctrl+Alt+FN combo.)

assim console é o único desses termos que não tem um único significado técnico bem definido. Tem alguns diferentes. (Dependendo de como você se sente sobre terminal adequado vs. terminal mais tty, você poderia dizer que o terminal também tem vários significados.)


7
2017-08-05 09:16



Console significando que o terminal físico “principal” não é apenas em um contexto de kernel. É o mesmo significado dentro /dev/console. Console não é particularmente ambíguo - embora seja usado ocasionalmente no sentido mais geral de terminal, isso é bem raro (mais raro que terminal sendo usado para significar especificamente um console). - Gilles
certo, sim, eco foo | sudo tee / dev / console> / dev / null será impresso na tela, se o seu VT atual estiver no modo de texto (incluindo o console framebuffer, não apenas literalmente o modo de texto VGA). Se você inicializou com o console em uma porta serial, acho que iria para lá. Você poderia dizer que / dev / consola o arquivo do dispositivo para qualquer que seja o kernel tratando como o console do sistema. Nada mais no sistema precisa ter uma noção de que existe um console tty em tudo (exceto para coisas de recuperação de inicialização que iniciam um shell no console TTY se o sistema falhar ao inicializar para o modo multiusuário. Geralmente do initrd) - Peter Cordes
O servidor xorg X (strings / usr / bin / Xorg) não usa / dev / console para obter acesso ao hardware. Ele usa / dev / tty0 e / dev / tty% d, e / dev / vc /% d, para configurar-se em seu próprio VT. Tenho certeza que o Xorg ainda rodaria bem em um PC que inicializasse com o console do kernel em uma porta serial. E que os terminais virtuais em modo texto ainda funcionariam. Quanto mais eu considero isso, mais eu estou inclinado a ver o console em um contexto de kernel como apenas um terminal especial, selecionado no momento da inicialização. (O Linux pode realmente enviar suas mensagens do console em vários terminais de uma só vez, se você solicitar.) - Peter Cordes


Acho que nos primórdios dos computadores de compartilhamento de tempo, cada usuário tinha um terminal (quando conseguia um!), Mas apenas os operadores do sistema tinham um console. O console poderia ser usado para tarefas como reinicializar a máquina ou obter diagnósticos do sistema que não eram possíveis dos terminais do usuário. O console estava na sala de máquinas, uma parte intrínseca do computador, enquanto os terminais podiam ser remotos. O console também incluiria luzes e interruptores de hardware, não apenas entrada e saída de texto.

Eu diria que a linha de comando é uma área onde um usuário pode digitar um comando, enquanto o shell é o programa que interpreta / obedece a esse comando. O termo "shell" é muito particular para derivados Unix; "linha de comando" é mais na tradição do Windows / DOS. O equivalente em mainframes é geralmente chamado de "linguagem de controle de trabalho".

Claramente, essas distinções originais tornaram-se turvas ao longo do tempo à medida que a tecnologia muda.


5
2017-08-04 22:35





Tentando resposta breve centrada no usuário:

linha de comando - a linha onde você digita comandos. Geralmente é usado para dizer que você precisa executar algo na janela de modo de texto (interface de linha de comando) fornecida pelo seu sistema operacional.

Concha - o programa real executado pelo sistema operacional para processar as coisas que você entra command line. Daí o nome - shell amigável para o núcleo do sistema operacional não amigável. Ele fornece prompt de comando, como $ ou >, executa seus próprios comandos e aplicativos. Você sempre trabalha com o shell programa e nunca operar com console ou terminal diretamente.

console - é uma janela onde os programas em modo texto estão sendo executados. Esta janela processa pressionamentos de teclas, sabe que é largura e altura. Pode ser em tela cheia.

terminal - é algum dispositivo com display para humanos que aceita fluxo de entrada de caracteres e os mostra. Não há feedback para o usuário sobre altura ou largura (apenas hacks) ou pressionamentos de tecla do teclado - somente caracteres estão viajando para ele. Terminal processa seqüências especiais neste fluxo para tornar as coisas coloridas, limpar a tela e fazer outras coisas desagradáveis. Os terminais são escamosos, porque é fácil bagunçar as coisas se o arquivo que você está canalizando para a saída contiver essas sequências especiais. Eles são populares em redes e interfaces de depuração de dispositivos, porque você só precisa de um único fluxo para enviar a saída e controlar o dispositivo de saída e você pode apenas tap na conversa sem a necessidade de inicializar ou criar uma janela.

consola serial - é um console que processa o fluxo de entrada como um terminal.


3
2017-10-24 10:42





Este é um assunto vago, porque os termos são muito ambíguos. Recomendo vivamente a leitura dos links que forneci ao longo desta resposta, que são também as minhas fontes para esta resposta.

UMA Concha é a camada acima do kernel:

  • Ele interpreta os comandos inseridos pelo usuário e os processa. O shell tem acesso ao kernel, ao contrário dos usuários. Os usuários só podem acessar o kernel por meio da digitação de comandos usando um shell e usando processos (por exemplo, programas em execução). Programas usam chamadas do sistema para acessar a funcionalidade do kernel. Todas as chamadas do sistema formam a API do sistema.
  • Exemplos de shells são dados na segunda definição de terminal.

UMA terminal tem muitos significados:

  • (1) um terminal de texto. Esta é a combinação de um monitor e um teclado. Um cabo conectou o terminal ao computador (geralmente indiretamente). Foi chamado de terminal, pois estava localizado no terminal desse cabo. Esses terminais eram normalmente separados fisicamente do computador, porque, nos dias em que muitos terminais eram conectados a um único mainframe / computador, vários usuários podiam ter acesso ao computador ao mesmo tempo.
  • (2) um janela de terminal a.k.a. emulador de terminal. No Linux, uma janela de terminal é a emulação de um console, contido em uma janela da GUI. É a CLI em que você digita seu texto e essa entrada é lida pelo shell que você está usando. Existem muitos tipos de invólucros (por exemplo, bash, traço, ksh88) e terminais (por exemplo, konsole, gnome).
  • (3) Para uma explicação sobre pseudo terminais, Visão esta. É um par de dois 'arquivos de dispositivos' usados ​​para comunicação entre um processo e um emulador de terminal.

UMA console tem muitos significados:

  • (1) um painel de instrumentos contendo os controles para um computador.
  • (2) um Console do sistema a.k.a. consola de computador. Esta é a combinação do monitor e um teclado conectado a um computador. Isso é sinônimo do que chamamos de 'terminal de texto'. Às vezes, também outros periféricos de entrada do usuário, como um mouse, fazem parte de um console.
  • (3) Uma interface de linha de comando que cobre a tela inteira. Isso está em contraste com uma janela de terminal, que é uma GUI com um X no canto superior direito para fechá-la. Estes são os dois modos de exibição para CLI (interfaces de linha de comando) em sistemas do tipo Unix. Da mesma forma que uma janela de terminal, o console também pode executar muitos shells.

Geralmente, os sistemas operacionais permitem executar vários consoles em um console físico (definição de console 2). Estes são chamados consoles virtuais a.k.a. terminais virtuaise pode ser acessado através ctrl + alt + Fx combinações. Por exemplo, se você deseja abrir o terceiro console virtual, use a combinação ctrl + alt + F3.

Consoles (definição 3) podem aparecer para você como um anacronismo, mas os especialistas devem se sentir à vontade para usá-los, pois há muitos sistemas operacionais que não suportam interfaces gráficas. Além disso, se uma GUI parar de responder, o console ainda poderá funcionar.


3
2017-12-03 05:13





A maioria terminais hoje em dia são estritamente falando emuladores de terminal. É um tipo de Função no funcionamento de um sistema semelhante ao UNIX e, ao mesmo tempo, a interface básica oferecida pelos sistemas. Na verdade, tudo, inclusive a GUI, é construída sobre ela.
Coloquialmente "terminal" também pode se referir a endpoints em uma rede de computadores com uma topografia em estrela.

Console refere-se às interfaces (hardware) dos terminais. Ou seja existem serial consoles e hoje em dia principalmente virtualuns.
A janela coloquialmente chamada de "console" -window é um shell, conectado a um terminal do sistema, através de um console virtual.

No passado, quando os computadores eram caros, uma instalação poderia ter um computador real e vários terminais conectados a ele, via cabos seriais ("console serial"). O SO, operações, etc. foram realizados no computador físico, entrada e saída ocorreram no console (s).
Você pode alternar entre terminais virtuais pressionando CTRL+ALT+F1(através de F6): uma sobra daqueles tempos.
Hoje, o conceito de "thin clients" remonta a essa direção de centralizar enormes quantidades de recursos e fornecer hardware suficiente para fornecer uma interface de última geração no local de trabalho real.

Concha é o "motor" que você vê no terminal. Ele fornece interoperabilidade com o próprio sistema e adiciona recursos interessantes como auto-completar, variáveis ​​etc.
Ele se traduz entre o OS / kernel real que usa as chamadas do sistema e você. Chamadas do sistema sem shell são um pouco como codificação assembler e uma casca pelo menos te dá C.

linha de comando refere-se ao método de troca de entrada e saída através de uma janela de texto. Estritamente falando, a linha em que você digita é a linha de comando (atual). O método em geral é mais corretamente chamado de interface da Linha de comando ou CLI.

  1. núcleo
  2. oferece terminal
  3. terminal está conectado através de um console
  4. console executa shell
  5. comandos e saída são trocados via linha de comando (interface)

2
2017-08-04 12:17



Instruções de linha de comando não são entendidas pelo kernel, mas por um shell. A “estrutura principal de instruções que o kernel entende” seria chamada de sistema. A “interface de linha de comando básica do UNIX” é um shell, não há separação entre isso e os “recursos legais”. Um “terminal emulador de janela” não é um console. - Gilles
@Gilles ajustado. Obviamente confundi algumas coisas eu mesmo lá. - Mark