Quais são as diferenças desses conceitos (Shell, Terminal, Console e Linha de Comando) no Linux?

Quais são as diferenças desses conceitos (Shell, Terminal, Console e Linha de Comando) no Linux?

Como novato, esses três conceitos: Shell, Terminal, Console e Linha de Comando têm me intrigado muito recentemente. Especialmente Console e Terminal?

Responder1

um Shell é um programa que você usa para fazer interface com o computador, pode ser uma interface de linha de comando ou uma interface de apontar e clicar. Bash é um shell, assim como o Gnome2, etc.

Terminal é um termo carregado na computação moderna. isso vem dos velhos tempos do mainframe, quando você digitava em um dispositivo de hardware conectado diretamente ao mainframe (um thin client, com apenas um teclado e um monitor). O terminal de hardware interagiu com um shell de software em execução no mainframe. Depois que os PCs e outros pequenos sistemas de clientes grossos surgiram, começamos a usar um software emulador de terminal que fingia que nosso cliente grosso era apenas um terminal de cliente fino conectado ao mainframe e nos permitia conectar remotamente. Foi aqui que coisas como aplicativos CICS encontraram seu nicho.

No sentido moderno, um 'terminal' do Linux gnome-terminalé um emulador de terminal, executando um shell no sistema local. A principal conclusão é que um terminal sempre abriga um shell, e você usa o terminal para acessar e interagir com o shell, seja um terminal de hardware ou software.

No uso moderno, um cliente (do modelo cliente/servidor para computação) é um software que se conecta e consome um serviço. Seu navegador da web é um cliente para serviços HTTP. Para se conectar a um servidor Samba ou Windows, você precisa de um cliente Samba. Um emulador de terminal em um link remoto geralmente usa um cliente como telnet, ssh ou hyperterm para conexão remota. Os clientes geralmente se conectam usando a rede como meio e passam mensagens com base em um protocolo de comunicação (como HTTP).

O termo Cliente também pode se referir a hardware, mas é menos comum, exceto em algumas áreas de nicho. Antigamente, quando você pegava um sistema independente e o conectava à rede, ele se tornava um cliente dessa rede. foi aqui também que obtivemos termos como Thin-client (uma máquina sem disco que executava software remotamente) e Thick-client (um PC independente com sistema operacional, CPU, RAM e armazenamento secundário próprios). Geralmente você pode dizer pelo contexto se o locutor está se referindo a um dispositivo de hardware (PC/Servidor/etc) ou a um cliente de software específico.

espero que ajude a esclarecer.

Responder2

Um terminal está na ponta de um fio elétrico, uma carapaça é a casa de uma tartaruga, tty é uma abreviatura estranha e um console é uma espécie de gabinete.

Bem, etimologicamente falando, pelo menos.

Na terminologia unix, a resposta curta é que

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

Console, terminal e tty estão intimamente relacionados. Originalmente, eles significavam um equipamento através do qual você poderia interagir com um computador: nos primórdios do Unix, isso significava umteleimpressoradispositivo de estilo semelhante a uma máquina de escrever, às vezes chamado de teletipo, ou “tty” em taquigrafia. O nome “terminal” veio do ponto de vista eletrônico, e o nome “console” do ponto de vista mobiliário. Muito cedo na história do Unix, teclados e displays eletrônicos se tornaram a norma para terminais.

Na terminologia unix, umttyé um tipo particular dearquivo de dispositivoque implementa uma série de comandos adicionais (ioctls) além de ler e escrever. Em seu significado mais comum,terminalé sinônimo de tty. Alguns ttys são fornecidos pelo kernel em nome de um dispositivo de hardware, por exemplo, com a entrada vindo do teclado e a saída indo para uma tela em modo texto, ou com a entrada e a saída transmitidas por uma linha serial. Outros ttys, às vezes chamadospseudo-ttys, são fornecidos (por meio de uma fina camada de kernel) por programas chamadosemuladores de terminal, comoXterm(correndo noSistema de janela X),Tela(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),Esperar(para script de interações de terminal), etc.

A palavra terminal também pode ter um significado mais tradicional de dispositivo por meio do qual se interage com um computador, normalmente com teclado e monitor. Por exemplo, um terminal X é uma espécie decliente magro, um computador para fins especiais cujo único propósito é controlar um teclado, um monitor, um mouse e, ocasionalmente, outros periféricos de interação humana, com os aplicativos reais sendo executados em outro computador mais poderoso.

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

Veja tambémPor que um Terminal Virtual é “virtual” e o que/por que/onde está o Terminal “real”?.


Aconchaé a interface principal que os usuários veem quando fazem login, cujo objetivo principal é iniciar outros programas. (Não sei se a metáfora original é que o shell é o ambiente doméstico do usuário ou que o shell é o local em que outros programas estão sendo executados.)

Nos círculos unix,conchase especializou para significar umshell de linha de comando, centrado em inserir o nome do aplicativo que se deseja iniciar, seguido dos nomes dos arquivos ou outros objetos nos quais o aplicativo deve atuar e pressionar a tecla Enter. Outros tipos de ambientes não utilizam a palavra “shell”; por exemplo, sistemas de janelas envolvem “gerenciadores de janela" e "ambientes de área de trabalho”, não uma “concha”.

Existem muitos shells Unix diferentes. Shells populares para uso interativo incluemBash(o padrão na maioria das instalações Linux),zsh(que enfatiza o poder e a personalização) epeixe(que enfatiza a simplicidade).

Os 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 noBourne_shell. Ao discutir “programação shell”, o shell quase sempre é considerado um shell do estilo Bourne. Alguns shells que são frequentemente usados ​​para scripts, mas não possuem recursos interativos avançados, incluema concha Korn (ksh)e muitoscinzasvariantes. Praticamente qualquer sistema do tipo Unix possui um shell estilo Bourne instalado como /bin/sh, geralmente ash, ksh ou bash.

Na administração do sistema Unix, o usuárioconchaé o programa que é invocado quando eles fazem login. Contas de usuários normais têm um shell de linha de comando, mas usuários com acesso restrito podem ter umshell restritoou algum outro comando específico (por exemplo, para contas somente para transferência de arquivos).


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

  • Entrada: o terminal converte chaves em sequências de controle (por exemplo, Left\e[D). O shell converte sequências de controle em comandos (por exemplo, \e[Dbackward-char).
  • Edição de linha, histórico de entrada e preenchimento 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 desta forma está M-x shellno Emacs.
  • Saída: o shell emite instruções como “exibir foo”, “mudar a cor do primeiro plano para verde”, “mover o cursor para a próxima linha”, etc.
  • 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.
  • Copiar e colar entre aplicativos é fornecido pelo terminal (geralmente com o mouse ou sequências de teclas como Ctrl+ Shift+ Vou Shift+ Insert). O shell também pode ter seu próprio mecanismo interno de copiar e colar (por exemplo, Meta+ We Ctrl+ Y).
  • Controle de trabalho(iniciar programas em segundo plano e gerenciá-los) é executado principalmente pelo shell. No entanto, é o terminal que lida com combinações de teclas como Ctrl+ Cpara encerrar o trabalho em primeiro plano e Ctrl+ Zpara suspendê-lo.

Reciclado deUnix e Linux

Responder3

OK,

shell: executa comandos em uma interface de linha de comando. é o programa que sabe o que fazer (quais programas chamar) quando você escreve algo como "cd", "grep" e assim por diante. normalmente você o verá chamado também de bash ou zsh (o mais comum). um shell também executa um script direto (geralmente arquivos .sh, embora a extensão não seja obrigatória)

terminal: uma janela gráfica (geralmente) para executar o shell real. tem sinos e assobios extras, como guias, fontes, tamanho da linha X coluna e assim por diante. um terminal pode ser definido para executar o shell que você gosta

cliente: nada a ver com o resto. em qualquer aplicativo que tenha uma arquitetura cliente/servidor (um site, uma conexão ssh, um programa de gerenciamento de banco de dados, um jogo multiplayer), o cliente é aquele com quem você interage e envia os pedidos ao servidor.

exemplo: conectando-se com ssh.

  • você abre um terminal.
  • execute o comando: ssh[e-mail protegido]
  • o shell é o que realmente executa o comando ssh, inicia um cliente ssh
  • este cliente se conectará através do intarwebs ao servidor ssh
  • quando você digita "whoami" no terminal, o shell está executando o cliente ssh, então ele sabe que o comando será enviado ao servidor. Na outra extremidade da rede, o servidor executa esse comando, envia o resultado de volta ao seu shell e o terminal faz uma exibição bonita e legível por humanos na área de trabalho.

mudar para um jogo: o "terminal" é a interface bonita, o "shell" é a parte interna que sabe o que fazer com cliques e toques nas teclas, o "cliente" seria o próprio mecanismo de jogo, enviando e recebendo coisas para o servidor para que todos os jogadores possam fragmentar uns aos outros sem atrasos :)

é uma visão muito simplificada, mas sem os detalhes, é só isso.

Responder4

ComoGillesescreveu emuma pergunta semelhante no Ask Ubuntu:

  1. Terminal = ambiente de entrada/saída de texto
  2. Console = terminal físico
  3. Shell = interpretador de linha de comando

Console e terminal estão intimamente relacionados. Originalmente, eles significavam um equipamento que permitiria interagir com um computador. (…) Na terminologia unix, um terminal é um tipo particular de arquivo de dispositivo que implementa uma série de comandos adicionais (ioctls) além de leitura e gravação. Alguns terminais, às vezes chamados de pseudoterminais ou pseudo-ttys, são fornecidos (por meio de uma fina camada de kernel) por programas chamados emuladores de terminal. Alguns tipos de emuladores de terminal incluem:

  • Aplicativos GUI em execução no sistema X Window: Xterm, Gnome Terminal, Konsole, Terminator, etc.
  • Screen e tmux, que fornecem 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.
  • Espere, para criar scripts de interações de terminal.

(…) Um console é geralmente um terminal no sentido físico que é, por alguma definição, o terminal primário conectado diretamente a uma máquina. O console aparece para o sistema operacional como terminais (implementados no 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); só para confundir as coisas, o nome dado a cada terminal específico pode ser “console”, “console virtual”, “terminal virtual” e outras variações.

(…) Uma linha de comando é uma interface onde o usuário digita um comando (que é expresso como uma sequência de caracteres — normalmente um nome de comando seguido de alguns parâmetros) e pressiona o botãoRetornarchave para executar esse comando.

Um shell é a interface principal que os usuários veem quando fazem login, cujo objetivo principal é iniciar outros programas. (Não sei se a metáfora original é que o shell é o ambiente doméstico do usuário ou que o shell é o local em que outros programas estão sendo executados.)

Nos círculos unix, shell se especializou para significar um shell de linha de comando, centrado em inserir o nome do aplicativo que se deseja iniciar, seguido pelos nomes dos arquivos ou outros objetos nos quais o aplicativo deve atuar e pressionar 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 janelas envolvem “gerenciadores de janelas” e “ambientes de desktop”, não um “shell”.

Se você pesquisar no Google, encontrará muitas informações úteis sobre esse assunto.

informação relacionada