No mundo do Linux, todos podem ter a mesma aparência do ponto de vista do usuário no teclado. As diferenças estão em como elas interagem umas com as outras.
O shell é o programa que realmente processa comandos e retorna a saída. A maioria dos 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 bash, o shell mais comum nos modernos sistemas linux.
Um terminal refere-se a um programa wrapper que executa um shell. Décadas atrás, esse era um dispositivo físico que consistia em pouco mais que um monitor e teclado. Como os sistemas unix / linux adicionaram melhores sistemas de multiprocessamento e de janelas, esse conceito de terminal foi abstraído para o software. Agora você tem programas como o Gnome Terminal, que abre uma janela em um ambiente de janelas do Gnome, que executa um shell no qual você pode inserir comandos.
O console é um tipo especial de terminal . Historicamente, o console era um único teclado e monitor conectado a uma porta dedicada do console serial em um computador usado para comunicação direta em um nível baixo com o sistema operacional. Os sistemas linux modernos fornecem consoles virtuais . Eles são acessados através de combinações de teclas (por exemplo, Alt+ F1ou Ctrl+ Alt+ F1; as teclas de função numeram consoles diferentes) que são tratadas em níveis baixos do sistema operacional linux - isso significa que não há nenhum serviço especial que precise ser instalado e configurado para executar . A interação com o console também é feita usando um programa shell .
Antes dos terminais serem monitores com teclados, eram teletipos - uma espécie de máquina de escrever elétrica. en.wikipedia.org/wiki/Teleprinter
Kevin Panko
13
Console às vezes significa "o teclado e o monitor fisicamente conectados a este computador". Por exemplo, "Eu entrei no console porque o servidor não estava respondendo à rede".
Kevin Panko
1
@ Doug Harris: Você pode adicionar algumas fotos do hardware de que está falando?
garras
1
Quando eu estava na faculdade, no final dos anos 80, trabalhei bastante nos terminais DEC VT220 - en.wikipedia.org/wiki/VT220 - Esse é um bom exemplo do dispositivo físico que descrevi.
Doug Harris
5
Então, se os terminais e consoles são, nos dias atuais, cada um implementado em software - qual é a diferença entre os dois (agora)?
Gavin Esperança
15
Um shell é um programa que exibe um prompt e espera que você digite comandos. Ele os executa e depois imprime outro prompt. Então, como o CMD no Windows ou o 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, geralmente significa a exibição que você vê antes da GUI iniciar ou depois de terminar; às vezes você pode mudar para exibi-lo em vez da GUI. É o local em que o sistema operacional imprime mensagens de erro. Em um computador multiusuário, é a tela realmente conectada ao computador. Só para confundir você, 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.
Um terminal é uma interface baseada em texto (possivelmente para um shell)
A diferença entre console e shell é uma que ainda não compreendo, mas posso dizer como um terminal é diferente de um shell.
O terminal é (de acordo com a Wikipedia ) "uma interface serial de computador 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 interagir com uma GUI baseada em texto , às vezes chamada de Interface do Usuário do Terminal . Por exemplo:
O Vim possui elementos da GUI, incluindo números de linha e guias nomeadas
O Nano possui elementos da GUI, incluindo um menu de ajuda dos comandos
O Tmux possui elementos da GUI, incluindo uma barra de status e linhas divisórias entre painéis
O Minicom possui elementos da GUI, incluindo menus e uma barra de status
Em cada caso, os elementos da GUI são "desenhados" com texto em vez de pixels.
Descreverei o caso de uso mais normal para isso no texto a seguir.
Um terminal usa um shell. Um shell pode funcionar sem um terminal.
Para se relacionar com itens do cotidiano:
Terminal -> tela da TV em sua casa
Shell -> Programa em execução na tela da TV
Outra maneira de ver isso: seus ouvidos (entrada) e boca (saída) são os terminais para o som. Seu cérebro é o intérprete desses sons usando um shell específico (processamento).
O terminal é para nós, humanos, para que possamos ler e escrever de / para o shell. Os shells podem ser executados em processos em segundo plano que não exigem interação humana, por exemplo, trabalho cron e, portanto, não requerem um terminal.
Poucos exemplos de terminais que existem:
Prompt de comando
guake
gnome-terminal
Exterminador do Futuro
Poucos exemplos de conchas que existem:
Bater
sh (casca Bourne)
PowerShell [janelas]
zsh (shell Z)
Eu escrevi apenas como esses dois normalmente funcionam, existem outras maneiras de trabalhar, mas isso é para um usuário mais avançado.
Pense em outro contexto, que é desenvolvimento.
Mesmo que você não tenha um conhecimento muito profundo do desenvolvimento, provavelmente conhece o básico, ou seja: edita um programa, envia-o a um compilador ou a um intérprete que cria um aplicativo compilado.
O console é como o editor do seu programa; ajuda você a escrever, mas na verdade não executa nada: quando você termina, envia para o compilador.
Você pode usar seu editor preferido, vim, gedit, emacs, bloco de notas ++, Netbeans, eclise etc.etc, mas no final 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.
Portanto, enquanto os terminais são apenas front-ends para o shell, o shell contém o idioma real, como acontece no compilador.
Obviamente, um terminal não é exatamente um editor de texto, principalmente porque não produz um arquivo, mas envia texto ao 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, acho que essa metáfora ajuda muito na compreensão dessa idéia.
Realmente não há muita diferença. No passado, quando o "shell" era um programa, o "terminal" era um invólucro de interface para esse programa, e o "console" era a conexão física com o computador (teclado / tela).
Há uma diferença dependendo do SO que você está executando. O shell "padrão" é o BASH , que normalmente está disponível em todos os tipos de Linux / Unix. O Windows usa um shell totalmente diferente.
prompt
e atécommand line
?Respostas:
No mundo do Linux, todos podem ter a mesma aparência do ponto de vista do usuário no teclado. As diferenças estão em como elas interagem umas com as outras.
O shell é o programa que realmente processa comandos e retorna a saída. A maioria dos 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
bash
, o shell mais comum nos modernos sistemas linux.Um terminal refere-se a um programa wrapper que executa um shell. Décadas atrás, esse era um dispositivo físico que consistia em pouco mais que um monitor e teclado. Como os sistemas unix / linux adicionaram melhores sistemas de multiprocessamento e de janelas, esse conceito de terminal foi abstraído para o software. Agora você tem programas como o Gnome Terminal, que abre uma janela em um ambiente de janelas do Gnome, que executa um shell no qual você pode inserir comandos.
O console é um tipo especial de terminal . Historicamente, o console era um único teclado e monitor conectado a uma porta dedicada do console serial em um computador usado para comunicação direta em um nível baixo com o sistema operacional. Os sistemas linux modernos fornecem consoles virtuais . Eles são acessados através de combinações de teclas (por exemplo, Alt+ F1ou Ctrl+ Alt+ F1; as teclas de função numeram consoles diferentes) que são tratadas em níveis baixos do sistema operacional linux - isso significa que não há nenhum serviço especial que precise ser instalado e configurado para executar . A interação com o console também é feita usando um programa shell .
fonte
Um shell é um programa que exibe um prompt e espera que você digite comandos. Ele os executa e depois imprime outro prompt. Então, como o CMD no Windows ou o 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, geralmente significa a exibição que você vê antes da GUI iniciar ou depois de terminar; às vezes você pode mudar para exibi-lo em vez da GUI. É o local em que o sistema operacional imprime mensagens de erro. Em um computador multiusuário, é a tela realmente conectada ao computador. Só para confundir você, 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.
fonte
Um terminal é uma interface baseada em texto (possivelmente para um shell)
A diferença entre console e shell é uma que ainda não compreendo, mas posso dizer como um terminal é diferente de um shell.
O terminal é (de acordo com a Wikipedia ) "uma interface serial de computador 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 interagir com uma GUI baseada em texto , às vezes chamada de Interface do Usuário do Terminal . Por exemplo:
Em cada caso, os elementos da GUI são "desenhados" com texto em vez de pixels.
fonte
Para iniciantes
Para uma descrição mais detalhada: https://askubuntu.com/a/506628/130518
Descreverei o caso de uso mais normal para isso no texto a seguir.
Um terminal usa um shell. Um shell pode funcionar sem um terminal.
Para se relacionar com itens do cotidiano:
Outra maneira de ver isso: seus ouvidos (entrada) e boca (saída) são os terminais para o som. Seu cérebro é o intérprete desses sons usando um shell específico (processamento).
O terminal é para nós, humanos, para que possamos ler e escrever de / para o shell. Os shells podem ser executados em processos em segundo plano que não exigem interação humana, por exemplo, trabalho cron e, portanto, não requerem um terminal.
Poucos exemplos de terminais que existem:
Poucos exemplos de conchas que existem:
Eu escrevi apenas como esses dois normalmente funcionam, existem outras maneiras de trabalhar, mas isso é para um usuário mais avançado.
fonte
Pense em outro contexto, que é desenvolvimento.
Mesmo que você não tenha um conhecimento muito profundo do desenvolvimento, provavelmente conhece o básico, ou seja: edita um programa, envia-o a um compilador ou a um intérprete que cria um aplicativo compilado.
O console é como o editor do seu programa; ajuda você a escrever, mas na verdade não executa nada: quando você termina, envia para o compilador.
Você pode usar seu editor preferido, vim, gedit, emacs, bloco de notas ++, Netbeans, eclise etc.etc, mas no final 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.
Portanto, enquanto os terminais são apenas front-ends para o shell, o shell contém o idioma real, como acontece no compilador.
Obviamente, um terminal não é exatamente um editor de texto, principalmente porque não produz um arquivo, mas envia texto ao 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, acho que essa metáfora ajuda muito na compreensão dessa idéia.
fonte
Realmente não há muita diferença. No passado, quando o "shell" era um programa, o "terminal" era um invólucro de interface para esse programa, e o "console" era a conexão física com o computador (teclado / tela).
Há uma diferença dependendo do SO que você está executando. O shell "padrão" é o BASH , que normalmente está disponível em todos os tipos de Linux / Unix. O Windows usa um shell totalmente diferente.
fonte