Qual é a diferença exata entre um 'terminal', um 'shell', um 'tty' e um 'console'?


1234

Eu acho que esses termos quase se referem à mesma coisa, quando usados ​​livremente:

  • terminal
  • Concha
  • tty
  • console

A que exatamente cada um desses termos se refere?



28
Eu gostaria de acrescentar 'linha de comando' para que :-)
teeks99

1
A linha de comando é simplesmente o idioma usado para enviar comandos para o interpretador de linha de comando em execução em um shell a partir do terminal / emulador de terminal.
Marty Fried

1
O teletypewriter (TTY) foi primeiro colocado em operação e exibido no Instituto de Mecânica de Nova York em 1844. en.wikipedia.org/wiki/Teleprinter
Serge Stroobandt

Mais dois links úteis - feyrer.de/NetBSD/ttys.html e quora.com/…
Nishant

Respostas:


1197

Um terminal está no final de um fio elétrico, uma concha é o lar de uma tartaruga, tty é uma abreviação estranha e um console é uma espécie de gabinete.

Bem, etimologicamente falando, de qualquer maneira.

Na terminologia unix, a resposta curta é que

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

Console, terminal e tty estão intimamente relacionados. Originalmente, eles se referiam a um equipamento através do qual você podia interagir com um computador: nos primeiros dias do unix, isso significava um dispositivo no estilo de teleprinter que se assemelha a uma máquina de escrever, às vezes chamada de teletypewriter, ou "tty", por abreviação. O nome “terminal” veio do ponto de vista eletrônico e o nome “console” do ponto de vista dos móveis. Muito cedo na história do unix, teclados e displays eletrônicos se tornaram a norma para terminais.

Na terminologia unix, um tty é um tipo específico de arquivo de dispositivo que implementa vários comandos adicionais ( ioctls ) além da leitura e gravação. No 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 proveniente do teclado e a saída indo para uma tela de modo de texto, ou com a entrada e saída transmitidas por uma linha serial. Outros ttys, às vezes chamados de pseudo-ttys , são fornecidos (através de uma fina camada do kernel) por programas chamados emuladores de terminal , como o Xterm (em execução no X Window System ), Screen(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), Expect (para interações de terminal de script) etc.

A palavra terminal também pode ter um significado mais tradicional de um dispositivo através do qual se interage com um computador, normalmente com um teclado e um monitor. Por exemplo, um terminal X é um tipo de thin client , um computador para fins especiais cujo único objetivo é acionar um teclado, monitor, mouse e, ocasionalmente, outros periféricos de interação humana, com os aplicativos em execução em outro computador mais poderoso.

Um console geralmente é um terminal no sentido físico que, por alguma definição, é o terminal principal diretamente conectado a uma máquina. O console aparece no sistema operacional como um tty (implementado pelo kernel). Em alguns sistemas, como Linux e FreeBSD, o console aparece como vários ttys (combinações especiais de teclas alternam entre esses ttys); apenas 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ém Por que um terminal virtual é "virtual" e o que / por que / onde é o terminal "real"? .


Um shell é a interface principal que os usuários veem quando efetuam 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 se o shell é o que outros programas estão executando.)

Nos círculos unix, shell se especializou em designar um shell de linha de comando , centrado em torno da inserção do nome do aplicativo que você deseja iniciar, seguido pelos nomes de arquivos ou outros objetos nos quais o aplicativo deve atuar e pressionando a tecla Enter. Outros tipos de ambientes não usam a palavra "shell"; por exemplo, os sistemas de janelas envolvem “ gerenciadores de janelas ” e “ ambientes de desktop ”, não um “shell”.

Existem muitas conchas unix diferentes. Os shells populares para uso interativo incluem Bash (o padrão na maioria das instalações Linux), zsh (que enfatiza o poder e a personalização) e fish (o que enfatiza a simplicidade).

Os shells da 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 com base no Bourne_shell . Ao discutir “ programação de shell ”, o shell quase sempre está implícito como um shell no estilo Bourne. Alguns shells geralmente usados ​​para script, mas sem recursos interativos avançados, incluem o shell Korn (ksh) e muitas variantes de ash . Praticamente qualquer sistema semelhante ao Unix possui um shell no estilo Bourne instalado como /bin/sh, geralmente ash, ksh ou bash.

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


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

  • Entrada: o terminal converte as teclas em seqüências de controle (por exemplo, Left\e[D). O shell converte seqüências de controle em comandos (por exemplo, \e[Dbackward-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, histórico e conclusão de linha e enviar apenas 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”, “alterne a cor do primeiro plano para verde”, “mova o cursor para a próxima linha”, etc. O terminal atua nessas 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 (retrocesso) é puramente um conceito terminal.
  • A cópia e colagem entre aplicativos é fornecida pelo terminal (geralmente com o mouse ou as seqüê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).
  • O controle de tarefas (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 eliminar o trabalho em primeiro plano e Ctrl+ Zpara suspendê-lo.

50
Único problema: eu diria que os dois tipos de ttys são "fornecidos por" o kernel. A diferença que eu enfatizaria é que os ttys de hardware (por exemplo, linhas seriais e o console em modo de texto) têm uma extremidade conectada ao hardware e uma extremidade conectada ao software (por exemplo, programas de login e / ou shells) enquanto os pseudo-ttys possuem ambas as extremidades conectadas ao software (por exemplo, um emulador de terminal em uma extremidade e shell na outra).
precisa

12
@phunehehe: Certo, esse é um significado diferente de "shell", comum no design de sistemas operacionais: o shell é a parte externa do kernel. Não é uma terminologia unix: os kernels Unix não tendem a ter um componente que se poderia chamar de shell.
Gilles

24
Esta é a imagem em minha mente para a metáfora da concha.
ændrük

12
Há também outro significado de "console" no Linux. O console (existe apenas um) é onde printka prioridade é suficiente (por exemplo, pânico do kernel). É definido passando console=DEVICE,...na linha de comando do kernel (por exemplo, console=ttyS0,115200para a primeira porta serial, a 115.200 bps). Normalmente, o padrão é o terminal virtual, mas isso pode ser alterado quando o kernel é compilado.
derobert

19
“… O terminal… lida com combinações de teclas como Ctrl + C para eliminar o trabalho em primeiro plano e Ctrl + Z para suspendê-lo” Não é bem assim: o terminal ainda apenas envia caracteres de controle, é o dispositivo tty que decide como lidar com eles e é configurável . Por padrão, o dispositivo tty converte os caracteres de controle em sinais enviados ao shell (e outros processos).
####

194

Um terminal ou um console é uma peça de hardware, usando a qual um usuário pode interagir com um host. Basicamente, um teclado acoplado a uma tela de texto.
Atualmente, quase todos os terminais e consoles representam os "virtuais".

O arquivo que representa um terminal é tradicionalmente chamado de arquivo tty . Se você procurar no diretório "/ dev" de um sistema UNIX, encontrará muitos arquivos tty conectados a consoles virtuais (por exemplo, tty1 no linux), terminais virtuais (por exemplo, pts / 0) ou hardware fisicamente conectado (por exemplo, ttyS0 é o terminal serial físico, se houver, conectado à primeira porta serial do host).

Um console deve ser um hardware fisicamente conectado ao (ou parte do) host. Ele tem um papel especial no sistema: é o ponto principal para acessar um sistema para manutenção e alguma operação especial pode ser feita apenas a partir de um console (por exemplo, consulte single user mode). Um terminal pode ser, e geralmente é, uma peça remota de hardware.

Por último, mas não menos importante, um shell é um programa especial que interage com um usuário através de um controle tty e oferece ao usuário a maneira de iniciar outros programas (por exemplo, bash, csh, tcsh).

Um emulador de terminal é um programa que emula um terminal físico (por exemplo, xterm, gnome-terminal, minicom).

Então, quando você olha para uma "janela de texto" no seu sistema Linux (no X11), está procurando: um emulador de terminal , conectado a um terminal virtual , identificado por um arquivo tty , dentro do qual executa um shell .


2
Qualquer computador de mesa tem console do sistema (no meu 2015 ou no pôster de 2010, não importa). Como foi afirmado corretamente, é uma peça de hardware. Mas afirmar que "hoje em dia quase todos os consoles representam os" virtuais "" é quase contraditório e obviamente não é bom.
você precisa saber é o seguinte

1
"Um terminal ou um console é uma peça de hardware, usando a qual um usuário pode interagir com um host. Basicamente, um teclado acoplado a uma tela de texto." explicação incrível por seu aspecto concreto
Webwoman

@andcoz - O que você quer dizer com "janela de texto"? Um emulador de terminal não é um terminal virtual? Se eu executar o comando ttyem um emulador de terminal como o Konsole do KDE, a saída será / dev / pts / 0.
Motivado

1
@IncnisMrsi - Não é um computador desktop o console ? Caso contrário, o que você quer dizer com ele possui um console do sistema?
Motivado

2
@Motivated /dev/pts/0é um arquivo tty, um manipulador para uma interface programática exposta pelo kernel. Através deste manipulador, um programa (por exemplo, o shell) pode interagir com um terminal (real ou virtual). Um emulador de terminal é um software que emula um terminal. O emulador pede ao kernel para criar um manipulador para permitir que os programas interajam consigo mesmos (veja man openpty). Portanto, as informações fluem do terminal (emulador) para o manipulador tty do kernel, para o programa (e vice-versa). Programas e terminais não se falam diretamente, mas apenas através do arquivo tty (o manipulador).
andcoz 16/01

48

BREVE explicação:

O console é um terminal. Um sistema possui um console e terminais potencialmente múltiplos. O console é normalmente a interface principal para gerenciar um computador, por exemplo, enquanto ele ainda está inicializando.

Um terminal é uma sessão que pode receber e enviar entrada e saída para programas de linha de comando. O console é um caso especial desses.

Um TTY é essencialmente um pseudo dispositivo, chame-o de recurso do kernel, que é usado pelos processos para acessar um terminal específico. Os TTYs podem ser vinculados a hardware, como uma porta serial, ou virtuais, por exemplo, criados quando um usuário faz login através de uma rede

O shell é um programa usado para controlar e executar programas. É frequentemente usado de forma interativa, através de um terminal. Existem vários programas Shell, sendo o Bash o shell mais usado atualmente. Outras conchas, em nenhuma ordem específica, incluem Bourne Shell, C-shell, Dash, Tsch, Ksh e o cada vez mais popular zsh. Existem muitos mais.

Quando você possui uma GUI, pode usar um programa de terminal para desenhar uma boa borda redimensionável, adicionar barras de rolagem e formatar o texto, etc., para uma sessão de terminal. Geralmente, eles são chamados emuladores de terminal e, às vezes, podem lidar com várias sessões através do conceito TAB. Um emulador de terminal geralmente inicia um Shell para permitir que você trabalhe interativamente em uma linha de comando.


1
PTY é um pseudo-TTY. O TTY pode ser, mas não é essencialmente um terminal virtual (pseudo).
Luciano

35

A TTY (ie T ELE TY pewriter) é um dispositivo especial que permite que pessoas surdas, com deficiência auditiva, ou o uso da fala-prejudicou o telefone para se comunicar, permitindo-lhes para digitar mensagens de texto. É necessário um TTY nos dois extremos da conversa para se comunicar.
OU
TTY é o terminal usado para digitar a mensagem de texto.


Concha : a parte externa de cobertura protetora de uma semente, isto é, núcleo.
OU
estrutura ou estrutura externa à parte central ou essencial de um sistema.
insira a descrição da imagem aqui


Console significa o teclado e monitora os anexos fisicamente ao computador.


28

Já existem duas ótimas respostas, mas gostaria de adicionar informações sobre a frase "terminal virtual" . Geralmente, significa algo que fornece a aparência / funcionalidade de um terminal, i. e um em sentido amplo. Mas nos primeiros dias do Linux (1994-1995) era usado como sinônimo de "console virtual" (várias interfaces de usuário não relacionadas) , por alguns desenvolvedores. Esse uso persiste na documentação; dois termos diferentes foram (e são) usados ​​para se referir a tty1, tty2 ... coisinhas. Atualmente (desde 1996), “terminal virtual” também pode se referir a emuladores de terminal baseados em .

O Linux vt(o driver do console do sistema em modo de texto) foi a primeira parte de seu kernel. Foi inicialmente usado para conexão com mainframes e, nesse sentido, é um "terminal virtual", daí o nome. O código que controla os consoles virtuais também residevt.c . Os engenheiros de kernel do Linux usam consistentemente a palavra "consoles" para indicar tty1, tty2 ... e usaram o prefixo "vc_" para eles. Por exemplo, há uma vc_allocatefunção. Por outro lado, os desenvolvedores de ferramentas de espaço do usuário como kbde console-toolsusaram "console virtual" (VC) e "terminal virtual" (VT) de forma intercambiável. Ī̲ entrou em contato com Andries E. Brouwere pediu que ele esclarecesse a terminologia usada pelos desenvolvedores iniciais (1994–95). Andries gentilmente forneceu algumas respostas. Ele afirma que VT e VC são sinônimos e abreviações "indivisíveis". -> Em geral, um console virtual é um terminal virtual, mas o inverso não é verdadeiro. Os "terminais virtuais" que não são consoles virtuais são de fato pseudoterminais (como Andries afirma, esses não são VT ). Diferentemente dos consoles virtuais, nos quais o kernel fornece a funcionalidade de terminal para um aplicativo de console, os pseudoterminais usam "dispositivos" PTY para organizar a comunicação entre os aplicativos de console e o programa de criação de terminal que é executado no espaço do usuário . Exemplos são emuladores de terminal baseados em X esshd, que aloca uma pseudotty para cada sessão de login. Uma pseudotty pode não ser chamada de "console" - é um erro.


14
  • Terminal = Uma interface que fornece uma exibição para saída e um teclado para entrada em uma sessão shell.

  • Shell = intérprete que executa comandos digitados como string

  • Console: na verdade, dois tipos de console que usamos

    • Console físico = A tela e o teclado do hardware usados ​​para interagir com um sistema

    • Console virtual = Um dos vários consoles lógicos que podem suportar uma sessão de login independente.

  • tty (teletipo ou seja, terminal). = Um terminal é basicamente um dispositivo de interface do usuário que usa texto para entrada e saída.


O que é um tty? - caso contrário, sua resposta é a única que li
loxaxs

8

Você precisa mergulhar na história.

Havia dispositivos tipo máquina de escrever com papel e teclado. Eles foram chamados de teletipos (que significa "digite remotamente", uma vez que "tele" significa "remoto") ou ttys para abreviar. Nos anos 70, eles eram obsoletos por dispositivos com monitor CRT chamados ttys de vidro .

Qualquer computador precisa de alguma maneira de relatar seu status e erros (e, provavelmente, aceitar comandos). Isso é feito através do console, que quase sempre é conectado diretamente ao computador. Portanto, existem 2 significados para console : algo que é usado para relatar status e algo que está conectado diretamente.

O UNIX é um sistema interativo: vários usuários podem se conectar a ele e iniciar aplicativos. Os primeiros computadores usavam teletipos ( tty ) para isso: cada usuário tinha um teletipo conectado à máquina com conexão de linha serial. Esse tipo de teletipo é chamado terminal . O UNIX também conseguiu um subsistema especial para lidar com "usuários sentados atrás de terminais", também chamado de tty, porque os primeiros terminais eram teletipos. Cada processo pode ser conectado ao tty no Unix. Isso significa que há um usuário em algum lugar sentado perto do terminal. Veja http://www.linusakesson.net/programming/tty/ para mais informações.

Os usuários precisam de alguma maneira de dizer ao kernel para executar o aplicativo. shell (sh, bash, csh, ksh, etc.) é usado para isso. O shell roda em tty , aceita comandos do usuário e pede ao kernel para executar algum aplicativo.

Mas os terminais nem sempre estão fisicamente conectados à máquina. Pode haver algum aplicativo que "emula" o terminal aceitando pressionamentos de teclas do usuário e enviando-os para algum lugar (xterm e ssh são bons exemplos). Existe uma API no Kernel chamada pseudo terminal para isso. Portanto, o seu tty pode realmente estar conectado a algum aplicativo em vez do terminal real. O Xterm usa o X11 para exibir texto e o ssh usa a conexão de rede para ele.

O IBM PC possui teclado e placa de vídeo ( às vezes também são chamados de console ). O Linux pode fazer coisas diferentes com ele:

  • Use-o como "mecanismo para relatar erros e status": console do Linux. Se você passar console = / dev / ttyS0 para o kernel, ele usará algo conectado ao COM1 como console; caso contrário, usará o console do PC.
  • Use-o para emular o terminal, chamado terminal virtual (vty).

Também pode parar de emular o terminal no console e fornecê-lo a algum aplicativo. O aplicativo pode alternar seu modo de vídeo e usá-lo exclusivamente (X11 ou svgalib podem fazer isso).

Então, aqui estão os significados modernos:

  • terminal: Algo com o usuário real sentado atrás dele. Pode ser terminal físico (raro) ou pseudo-terminal (xterm, ssh) ou terminal virtual (vty no Linux)
  • shell: aplicativo (bash, tcsh, etc) que ajuda o usuário a interagir com o sistema.
  • tty: subsistema de terminal ou kernel para suportar terminais.
  • console: algo em que status e erros são relatados ( /dev/console) ou teclado físico e vídeo conectado ao computador.

7

Aqui está a resposta curta -

Kernel - a parte mais interna de qualquer sistema operacional moderno que fale diretamente com o hardware real.

Shell - invólucro em torno do Kernel atual. Sempre que executamos o comando, na verdade conversamos com o shell, que por sua vez chama as instruções apropriadas do Kernel. Além disso, o shell é capaz de executar outras tarefas, como encontrar um programa apropriado, ao mesmo tempo em que possui comandos, algum nome abreviado de nome de arquivo, comandos de tubulação etc.

Terminal - na era da computação anterior, os computadores (conhecidos como Mainframe) eram gigantes. Portanto, era fácil ter uma única unidade de processamento e conectá-la de vários lugares. Terminal é o hardware real com dispositivos de teclado e saída conectados ao mainframe.

Console - Tipo especial de terminal que está diretamente conectado ao Mainframe para fins de Administração do SO.

tty - TeleTypewriter usado para enviar e receber dados de e para o Mainframe. Usado antes que os terminais de vídeo estivessem disponíveis. Mas, convencionalmente, ainda foi nomeado como tty. Até o coommandstty

A resposta longa e detalhada está aqui - Terminal, Console, Shell, Kernel, Comandos - Diferentes partes de um computador


obrigado, mas basicamente se o terminal existe, por que ainda existem tty também no sistema ubuntu para computadores pessoais, acessíveis com alt + f-1/6, por favor, não consigo descobrir a utilidade deles acima do fato de que eles podem ser acessados ​​sem o uso do sistema gráfico se eu tiver bem entendido
Webwoman

1
@Webwoman - Eu tenho meu sistema configurado para permitir apenas o acesso à rootconta através sudoou através de um login no console. Os consoles geralmente têm um lugar especial em termos de privilégios, pois alguém que tem acesso a eles necessariamente tem acesso físico ao computador com o qual se comunica. Eles também são o método de acesso de último recurso. Se o sistema operacional estiver em um estado parcialmente quebrado (como o driver ethernet está quebrado), você ainda poderá acessar o console. É o único dispositivo de interface humana que SEMPRE deve estar disponível, independentemente do estado do sistema.
Omnifarious

@Omnifarious thanks for your answer "Os consoles geralmente têm um lugar especial em termos de privilégios, pois alguém que tem acesso a eles necessariamente tem acesso físico ao computador com o qual se comunicam" você quis dizer que o TTY geralmente tem um lugar especial em termos de privilégios?
Webwoman 13/07

@Webwoman - Não, console. Um TTY frequentemente não está diretamente conectado a um computador. E um console frequentemente não é um TTY no sentido tradicional. Quando fui para a Universidade de Minnesota no final dos anos 80, havia uma rede especializada em todo o campus que eu não estava executando o Protocolo da Internet (também conhecido como IP) para conectar TTYs aleatórios a computadores aleatórios. Os mainframes da IBM têm algo parecido e esse foi um dos grandes motivos pelos quais a IBM criou o SNA. E um PC normal, mesmo quando apenas exibe texto, é muito diferente de um TTY de várias maneiras, portanto, um console de PC não é exatamente um TTY.
Omnifarious 13/07

@Webwoman - O recurso que define um console é que ele tem uma conexão direta com o hardware que está executando o sistema operacional. Essa idéia é um pouco confusa com as modernas 'máquinas virtuais', mas essa é a idéia básica.
Omnifarious 13/07

6

Além da resposta aceita e do artigo desmistificado The TTY , adorei ler esses dois artigos:

Este é baseado no NetBSD.

Na era da pedra do Unix, os sistemas de computador consistiam em um mainframe, uma grande caixa de luzes piscantes com memória, armazenamento em massa e unidades de computação, e que executam processos iniciados por usuários ou operadores. Como o hardware era muito caro, os sistemas eram usados ​​como verdadeiros sistemas multiusuário, com muitas pessoas interagindo com o sistema ao mesmo tempo. O que geralmente não tinha - ao contrário das estações de trabalho Unix atuais - era um monitor e teclado fixos. Em vez disso, a emissão de comandos para a máquina e a recuperação da saída eram feitas em linhas seriais, usando os teletipos primeiro e os terminais CRT (tubo de raios catódicos) posteriormente. Os teletipadores - é daí que vêm os "ttys" no Unix - são máquinas de escrever eletrônicas que enviam teclas pressionadas sobre a linha serial para o host,

Este é baseado no Linux.

Terminais são dispositivos que fornecem recursos aprimorados de entrada / saída além do que poderia ser alcançado com apenas arquivos, tubos e soquetes regulares. Esses recursos foram projetados para facilitar a interação entre humanos e computadores e são inúteis para programas que tentam conversar entre si.


1

Deixe-me dar uma olhada nisso ... Vou usar o Unix e o Linux mais ou menos como sinônimo disso. Se estou me referindo a algo histórico que antecede a existência do Linux, normalmente escreverei "Unix" e, se estou falando de algo mais recente, ou algo específico ao sabor Linux do Unix, geralmente escreverei "Linux "

Concha

A única coisa na sua lista que é um conceito discreto que não se sobrepõe aos outros é o 'shell'. O shell é um programa cujo objetivo é se comunicar com um usuário e realizar operações do sistema operacional em seu nome.

Os shells mais comuns usam uma técnica chamada 'linha de comando', que consiste em enviar ao usuário algum tipo de prompt, aguardar que o usuário digite um comando de texto e depois executar esse comando. Mas existem shells baseados em menus e até shells gráficos (como o Windows File Explorer), embora nenhuma pessoa respeitável do Unix possa chamar isso de 'shell'.

No Unix, se alguém chama algo de 'shell', quase certamente significa alguma forma de interface de linha de comando, como acabei de descrever. E é muito estranho no mundo Unix referir-se a qualquer coisa como um 'shell' se não estiver se comunicando com um usuário usando o modelo tty que eu descrevi mais adiante.

TTY

Isso é confuso porque pode se referir a alguns tipos diferentes de coisas.

No Linux, existe um tipo de dispositivo chamado 'tty'. É um dispositivo abstrato que se espera que seja usado para comunicação bidirecional com algo que seja um usuário ou esteja recebendo alguma informação de um usuário. Às vezes, esse dispositivo abstrato pode corresponder diretamente a algum dispositivo físico. Às vezes, pode ser um programa que está apresentando a alguém uma janela na qual a comunicação aparece e na qual o usuário pode digitar.

Mas, a razão pela qual esse dispositivo abstrato existe e o motivo de ser chamado de 'tty' é que 'tty' é a abreviação de 'teletype', que era um dispositivo físico real que tinha uma impressora impressa em papel combinada com um teclado. O modelo que o dispositivo 'tty' abstrato apresenta aos programas que o estão usando é basicamente o fato de existir um teletipo na outra extremidade. Você envia caracteres e esses caracteres aparecem no teletipo. Quando você lê caracteres, esses caracteres representam teclas digitadas em um teclado.

Os antigos ttys baseados em impressoras de papel foram rapidamente substituídos pelos ttys de vídeo. Nesses, é claro, não há rolo de papel. E, de fato, é possível substituir qualquer caractere na tela. Mas, em vez de apresentar algum tipo de interface abstrata de 'tela' aos programas, espera-se que os programas enviem fluxos especiais de caracteres chamados seqüências de escape que realizam uma variedade de tarefas. Geralmente, existe uma coisa abstrata chamada 'cursor' que pode ser movida pela tela, e qualquer caractere enviado substituirá o que estiver no cursor e o cursor moverá um caracter mais adiante. Muitas vezes, você pode alterar a cor de um personagem que está prestes a ser impresso com seqüências de escape também.

Existem 'ttys de vidro' que não seguem esse modelo e, consequentemente, são mal tratados no mundo Unix. A família de terminais de vídeo IBM 3270 se enquadra nessa categoria.

O que as pessoas Linux / Unix normalmente chamam de 'janela de shell' é uma emulação de um tty de vidro usando uma interface gráfica do usuário. Internamente, os programas executados dentro de uma janela do shell estão conversando com um dispositivo tty virtual que às vezes é chamado de pseudo-tty ou pseudo-terminal (também conhecido como pty).

terminal

Um terminal é apenas um lugar onde computador e humanos devem interagir. Os terminais podem ser completamente gráficos e não seguir o modelo tty de nenhuma maneira, mesmo que um programa possa usar seus recursos para emular isso. Todos os ttys físicos reais (vidro ou outros) são terminais.

Console

Um console é um tipo especial de terminal que geralmente deve estar conectado de alguma maneira direta e segura ao hardware no qual o sistema operacional está sendo executado.

No Linux, o console é virtualizado de forma reduzida, o que permite que você use um pressionamento de tecla especial para alternar entre os consoles virtuais. Mas essa virtualização é feita com um hardware real por software no kernel.

Existem maneiras de usar o Linux através do que é chamado de 'console serial', que é um console conectado ao computador por uma porta serial como uma porta USB (ou, em alguns computadores muito pequenos e / ou muito antigos, uma porta RS-232 de algum tipo) e segue o modelo antigo de teletipo de maneira bastante rígida.

Novamente, a idéia é que esse console esteja conectado de maneira física direta ao computador, e não através de algum tipo de rede que permita a conexão de qualquer pessoa.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.