Questão Qual é a diferença entre shell, console e terminal?


Estou confuso com a terminologia. Qual é a diferença entre shell, console e terminal?


162


origem


e sobre prompt e até mesmo command line? - n611x007
Dê uma olhada nesta questão do Unix & Linux: unix.stackexchange.com/questions/4126/… - Flimm
Minha esposa disse "a tela preta" - Kenji Noguchi


Respostas:


No mundo linux, todos podem parecer iguais do ponto de vista do usuário no teclado. As diferenças estão em como elas interagem umas com as outras.

o Concha é o programa que realmente processa comandos e retorna a saída. A maioria das shells também gerencia processos de primeiro e segundo plano, histórico de comandos e edição de linha de comando. Esses recursos (e muitos mais) são padrão em bash, o shell mais comum em sistemas Linux modernos.

UMA terminal refere-se a um programa wrapper que executa um shell. Décadas atrás, este era um dispositivo físico que consistia em pouco mais que um monitor e um teclado. Como os sistemas unix / linux adicionaram melhores sistemas de multiprocessamento e janelas, este conceito de terminal foi resumido em software. Agora você tem programas como Terminal Gnome que lança uma janela em um ambiente de janelas Gnome que vai executar um Concha em que você pode inserir comandos.

o console é um tipo especial de terminal. Historicamente, o console era um único teclado e monitor conectado a uma porta de console serial dedicada em um computador usado para comunicação direta em um nível baixo com o sistema operacional. Modernos sistemas Linux fornecem consoles virtuais. Estes são acessados ​​através de combinações de teclas (por exemplo, Alt+F1 ou Ctrl+Alt+F1; a tecla de função números de consoles diferentes) que são manipulados em níveis baixos do sistema operacional Linux - isso significa que não há nenhum serviço especial que precisa ser instalado e configurado para ser executado. Interagir com o console também é feito usando um Concha programa.


143



Antes dos terminais serem monitores com teclados, eles eram teletipos - uma espécie de máquina de escrever elétrica. en.wikipedia.org/wiki/Teleprinter - Kevin Panko
Console às vezes significa "o teclado e o monitor fisicamente conectados a este computador". Por exemplo, "Eu fiz o login do console porque o servidor não estava respondendo à rede". - Kevin Panko
@Doug Harris: Você pode adicionar algumas fotos do hardware que você está falando? - claws
Quando eu estava na faculdade, no final dos anos 80, trabalhei muito em terminais DEC VT220 - en.wikipedia.org/wiki/VT220 - Esse é um bom exemplo do dispositivo físico que descrevi. - Doug Harris
Então se terminais e consoles são, nos dias de hoje, cada um implementado em software - qual é a diferença entre os dois (agora)? - Gavin Hope


Um shell é um programa que coloca um prompt e espera que você digite comandos. Ele os executa e imprime outro prompt. Então, como CMD no Windows, ou Bash no Unix. Pode ser executado em um terminal ou no console.

Um console era originalmente uma coisa física, um painel de controle. Em termos de computação, normalmente significa a exibição que você vê antes de a GUI ser iniciada ou depois de concluída; às vezes você pode alternar para exibi-lo em vez da GUI. É o lugar onde o sistema operacional imprime mensagens de erro. Em um computador multiusuário, é o monitor que está realmente conectado ao computador. Só para confundi-lo, no Windows também pode significar uma janela com um shell de comando, ou seja, um terminal.

Um terminal também era originalmente hardware, usado para se comunicar com um computador. Atualmente, geralmente se refere a uma janela com uma linha de comando (shell), que pode aparecer em uma janela da GUI ou em vez de uma GUI.


10





Pense em outro contexto, isto é, desenvolvimento.
Mesmo que você não tenha um conhecimento muito profundo de desenvolvimento, provavelmente conhece o básico, ou seja: edita um programa, o submete a um compilador ou a um interpretador que constrói um aplicativo compilado.
O console é como o editor do seu programa; te ajuda em escrevendo mas realmente não executa nada: quando você terminar, você o envia para o compilador para isso.

Você pode usar seu editor preferido, vim, gedit, emacs, notepad ++, NetBeans, eclise etc.etc, mas no final eles são apenas ferramentas diferentes: se você escrever o mesmo programa, a saída será a mesma.
Nesta metáfora, o shell é o compilador. Os comandos inseridos no terminal são enviados ao shell que os interpreta e os executa imediatamente.
Assim, enquanto os terminais são apenas front-ends para o shell, o shell contém a linguagem real, como acontece com o compilador.

Obviamente, um terminal não é exatamente um editor de texto, principalmente porque ele não produz um arquivo, mas envia um texto para o shell subjacente e recupera a saída dele.

E o shell não é um compilador, na verdade, ele interpreta seu comando e o executa imediatamente, em vez de criar um executável.

Mesmo com essa grande diferença, encontro essa metáfora para ajudar muito a entender essa ideia.


1





Realmente não há muita diferença. De volta, quando o "shell" era um programa, o "terminal" era um wrapper de frontend para este programa, e o "console" era a conexão física com o computador (teclado / tela).

Há uma diferença dependendo de qual sistema operacional você está executando. O shell "padrão" é BASH, que normalmente está disponível em todos os tipos de Linux / Unix. O Windows usa um shell totalmente diferente.


0





Um Terminal é uma interface baseada em texto (possivelmente para um shell)

A diferença entre console e shell é uma que eu ainda não compreendo, mas posso dizer como um terminal é diferente de um shell.

o terminal é (de acordo com a Wikipedia) "uma interface de computador serial para entrada e exibição de texto. As informações são apresentadas como uma matriz de caracteres formados pré-selecionados".

Você pode usar um terminal para interagir com um shell, mas também pode usá-lo para interagir com um GUI baseada em texto, às vezes chamado de Interface do usuário do terminal. Por exemplo:

  • Vim tem elementos GUI, incluindo números de linha e guias nomeadas
  • Nano tem elementos GUI incluindo um menu de ajuda de comandos
  • Tuxux tem elementos GUI, incluindo uma barra de status e linhas divisórias entre os painéis
  • Minicom tem elementos GUI, incluindo menus e uma barra de status

Em cada caso, os elementos GUI são "desenhados" com texto em vez de pixels.


0



Não tenho certeza sobre essa definição de ser apenas baseada em texto. De certa forma algumas GUIs poderiam ser consideradas terminais imo. - jiggunjer


Para iniciantes iniciantes

Para uma descrição mais detalhada: https://askubuntu.com/a/506628/130518

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

Eu descreverei o caso de uso mais normal para isso no texto a seguir.

Um terminal usa como o inferno. Um shell pode ser executado sem um terminal.

Para se relacionar com itens do cotidiano:

  • Terminal -> tela de TV em sua casa
  • Shell -> Programa em execução na tela da TV

Outra maneira de olhar para ele: seus ouvidos (entrada) e boca (saída) são os terminais para o som. Seu cérebro é o intérprete desses sons usando uma casca específica (processamento).

O terminal é para nós humanos, então podemos ler e escrever para / do shell. Os reservatórios podem ser executados em processos de segundo plano que não requerem interação humana, e. trabalho cron e, portanto, não requerem um terminal.

Alguns exemplos de terminais que existem:

  • Prompt de comando
  • guake
  • gnomo-terminal
  • Exterminador do Futuro

Alguns exemplos de shells que existem:

  • Festança
  • sh (casca de Bourne)
  • PowerShell [janelas]
  • zsh (shell Z)

Eu só escrevi como esses dois normalmente funcionam, existem outras maneiras de trabalhar, mas isso é para um usuário mais avançado.


0