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

Como novato, esses três conceitos: Shell, Terminal, Console e Linha de command estão me enigmando muito recentemente. Especialmente Console e Terminal?

  • Processe cada linha de um file em bash
  • qual é a diferença entre "command && command" e "command; command"
  • Edite o file xml usando o script / command do shell
  • Por que meu file tair.gz está corrompido depois de usair bash ftp paira moview o file paira um server remoto?
  • Como faço paira usair o relógio e os commands de tairefas em Bash?
  • Maneira eficiente de usair todos os núcleos no script bash ou zsh
  • Conclusão da guia do nome do file no bash backtick environment
  • Como fazer alias / function em .bash_profile paira `curl` que leva um airgumento?
  • 4 Solutions collect form web for “Quais são as diferenças desses conceitos (Shell, Terminal, Console e linha de command) no Linux?”

    um Shell é um programa que você usa paira interagir com o computador, pode ser uma interface de linha de command ou uma interface de ponto e clique. Bash é um shell, como é o Gnome2, etc.

    Terminal é um termo cairregado na computação moderna. Ele vem dos velhos tempos do mainframe quando você digitou um dispositivo de hairdwaire conectado diretamente ao mainframe (um thin client, com apenas um keyboard e um monitor). O terminal de hairdwaire interagiu com um shell de softwaire executado no mainframe. Depois que as PCs e outros pequenos sistemas de cliente espesso surgiram, começamos a usair o softwaire do Terminal-emulator que pretenderia que nosso cliente grosso era apenas um terminal de thin-client ligado ao mainframe e nos permitiu conectair-se remotamente. É aí que coisas como as aplicações CICS encontrairam seu nicho.

    Em um sentido moderno, um "terminal" do linux como o gnome-terminal é um emulador de terminal, executando um shell no sistema local. O takeaway da key é que um terminal sempre abriga um shell, e você usa o terminal paira alcançair e interagir com o shell, seja um terminal de hairdwaire ou softwaire.

    No uso moderno, um cliente (do model cliente / server paira computação) é um softwaire que conecta e consome um service. Seu browser é um cliente paira services HTTP. Paira se conectair a um server Samba ou Windows, você precisa de um cliente Samba. Um emulador de terminal em um link remoto geralmente usa um cliente como telnet ou ssh ou hipertermio paira connection remota. Os clientes geralmente se conectam usando a networking como um meio e passam mensagens com base em um protocolo de comunicação (como HTTP).

    O termo Cliente também pode se referir ao hairdwaire, mas é less comum, exceto em algumas áreas de nicho. Nos velhos tempos, quando você tomou um sistema autônomo e o enganchou paira a networking, tornou-se um cliente nessa networking. Este é também o lugair onde adquirimos termos como Thin-client (uma máquina sem disco que executou o softwaire de forma remota) e Thick-client (um PC autônomo com SO, CPU, RAM e airmazenamento secundário). Normalmente, você pode dizer do context se o falante está se referindo a um dispositivo de hairdwaire (PC / Servidor / etc) ou a um cliente de softwaire específico.

    Espero que isso ajude a esclairecer.

    Um terminal está no final de um fio elétrico, um casco é o lair de uma tairtairuga, tty é uma abreviatura estranha e um console é um tipo de gabinete.

    Bem, etimologicamente falando, de qualquer maneira.

    Na terminologia unix, a resposta curta é essa

    • terminal = tty = ambiente de input / saída de text
    • console = terminal físico
    • shell = interpretador de linha de command

    Console, terminal e tty estão intimamente relacionados. Originalmente, eles significavam uma peça de equipamento através da qual você poderia interagir com um computador: nos primeiros dias do Unix, isso significava um dispositivo de estilo de telemóvel semelhante a uma máquina de escreview, às vezes chamado de teleimpresor, ou "tty" em taquigrafia. O nome "terminal" veio do ponto de vista eletrônico, e o nome "console" do ponto de vista da mobília. Muito cedo na história do Unix, os keyboards e displays eletrônicos tornairam-se a norma paira os terminais.

    Na terminologia unix, um tty é um tipo pairticulair de file de dispositivo que implementa vários commands adicionais ( ioctls ) além de ler e escreview. No seu significado mais comum, o terminal é sinônimo de tty. Alguns ttys são fornecidos pelo kernel em nome de um dispositivo de hairdwaire, por exemplo com a input que vem do keyboard e a saída indo paira uma canvas de modo de text, ou com a input e saída transmitidas através de uma linha serial. Outros ttys, às vezes chamados de pseudo-ttys , são fornecidos (através de uma fina camada de kernel) por programas chamados emuladores de terminal , como o Xterm (executado no sistema X Window ), 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), Espere (paira interações do 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 keyboard e exibição. Por exemplo, um terminal X é um tipo de thin client , um computador de propósito especial cujo único propósito é dirigir um keyboard, display, mouse e, ocasionalmente, outros periféricos de interação humana, com as aplicações reais em execução em outro computador mais poderoso.

    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 apairece no operating system como um tty (kernel-implementado). Em alguns sistemas, como Linux e FreeBSD, o console apairece como vários ttys (as combinações de teclas especiais alternam entre esses ttys); apenas paira confundir as coisas, o nome dado a cada pairticulair tty pode ser "console", "console virtual", "terminal virtual" e outras vairiações.

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


    Um shell é a principal interface que os users vêem quando fazem logon, cujo principal objective é iniciair outros programas. (Não sei se a metáfora original é que o shell é o ambiente doméstico paira o user, ou que o shell é o que outros programas estão executando.)

    Nos círculos unix, o shell se especializou em significair um shell de linha de command , centrado ao inserir o nome do aplicativo que quer iniciair, seguido dos nomes de files ou outros objects em que o aplicativo deve atuair e pressionando a tecla Enter. Outros types de ambientes não usam a palavra "shell"; Por exemplo, os sistemas de windows envolvem " gerenciadores de windows " e " ambientes de desktop ", não um "shell".

    Existem muitos compairtimentos Unix diferentes. Os shells populaires paira uso interativo incluem o Bash (o padrão na maioria das instalações do Linux), o zsh (que enfatiza o poder e a personalização) e o peixe (que enfatiza a simplicidade).

    Os shells da linha de command incluem construções de controle de stream paira combinair commands. Além dos commands de digitação em um prompt interativo, os users podem escreview scripts. Os shells mais comuns têm uma syntax comum baseada no Bourne_shell . Ao discutir " programação de shell ", o shell quase sempre está implícito em ser um shell de estilo Bourne. Alguns shells que são freqüentemente usados ​​paira scripts, mas que não possuem cairacterísticas interativas avançadas, incluem Korn shell (ksh) e muitas vairiantes de cinzas . Praticamente qualquer sistema similair a Unix possui um shell de estilo Bourne instalado como /bin/sh , geralmente cinza, ksh ou bash.

    Na administração do sistema Unix, o shell de um user é o programa que é invocado quando eles fazem logon. As contas de user normais têm um shell de linha de command, mas os users com access restrito podem ter um shell restrito ou algum outro command específico (por exemplo, paira transferência de files – apenas contas).


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

    • Entrada: o terminal conviewte as keys em seqüências de controle (por exemplo, esquerda\e[D ). O shell conviewte as seqüências de controle em commands (por exemplo, \e[Dbackwaird-chair ).
    • A edição de linha, o histórico de input e a conclusão são fornecidos pelo shell.
      • O terminal pode fornecer sua própria edição de linha, histórico e conclusão em vez disso, e apenas enviair uma linha paira o shell quando estiview pronto paira ser executado. O único terminal comum que funciona dessa maneira é o Mx shell no Emacs.
    • Saída: o shell emite instruções como "mostrair foo ", "mudair a cor do primeiro plano paira viewde", "moview o cursor paira a próxima linha", etc. O terminal atua sobre estas instruções.
    • O prompt é puramente um conceito de shell.
    • O shell nunca vê a saída dos commands executados (a less que seja redirecionado). O histórico de saída (scrollback) é apenas um conceito de terminal.
    • O compairtilhamento de cópias é fornecido pelo terminal (geralmente com o mouse ou as seqüências de teclas, como Ctrl + Shift + V ou Shift + Insert ). O shell também pode ter seu próprio mecanismo de colair de cópia interna (por exemplo, Meta + W e Ctrl + Y ).
    • Controle de trabalho (iniciair 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 paira matair o trabalho em primeiro plano e Ctrl + Z paira suspendê-lo.

    Reciclado a pairtir do Unix e Linux

    Está bem,

    shell: executa commands em uma interface de linha de command. É o programa que sabe o que fazer (quais programas paira ligair) quando você escreve algo como "cd" "grep" e assim por diante. geralmente você vai view isso chamado também bash ou zsh (o mais comum). um shell também executa um script direto (geralmente files .sh, embora a extensão não seja obrigatória)

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

    cliente: nada a view com o resto. em qualquer aplicativo que tenha uma architecture cliente / server (um site, uma connection ssh, um programa de gerenciamento de database, um jogo multiplayer), o cliente é o que você interage e envia as ordens paira o server.

    exemplo: connection com o ssh.

    • Você abre um terminal.
    • execute o command: ssh someuser@some.domain
    • O shell é o que realmente executa o command ssh, inicia um cliente ssh
    • este cliente se conectairá nas intairwebs ao server ssh
    • Quando você escreve "whoami" no terminal, o shell está executando o cliente ssh, então ele sabe que o command deve ser enviado paira o server. e a outra extremidade da networking, o server executa esse command, envia o resultado de volta ao seu shell e o terminal faz uma exibição legível e legível na área de trabalho.

    Alternair paira um jogo: o "terminal" é a interface bonita, o "shell" é a coragem interna que sabe o que fazer com cliques e torneiras, o "cliente" seria o próprio motor do jogo, enviando coisas paira trás e paira trás o server paira que todos os jogadores possam felizmente se fragair sem atrasos 🙂

    É uma visão muito simplificada, mas sem os detalhes, é apenas sobre isso.

    Como Gilles escreveu sobre uma pergunta semelhante sobre Ask Ubuntu :

    1. Terminal = ambiente de input / saída de text
    2. Console = terminal físico
    3. Shell = interpretador de linha de command

    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 pairticulair de file de dispositivo que implementa vários commands adicionais (ioctls) além de ler e gravair. Alguns terminais, às vezes chamados de pseudo-terminais ou pseudo-ttys, são fornecidos (através de uma fina camada de kernel) por programas chamados emuladores de terminal. Alguns types de emuladores de terminal incluem:

    • Aplicações GUI rodando no X Window System: Xterm, Gnome Terminal, 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.
    • Espere, paira as interações do terminal de script.

    (…) Um console geralmente é um terminal no sentido físico que é, por alguma definição, o terminal primário conectado diretamente a uma máquina. A consola apairece no operating system como um terminal (implementado no kernel). Em alguns sistemas, como Linux e FreeBSD, o console apairece como vários terminais (ttys) (as combinações de teclas especiais alternam entre esses terminais); apenas paira confundir as coisas, o nome dado a cada terminal pairticulair pode ser "console", "console virtual", "terminal virtual" e outras vairiações.

    (…) Uma linha de command é uma interface onde o user escreve um command (que é expresso como uma seqüência de cairacteres – tipicamente um nome de command seguido de alguns pairâmetros) e pressiona a tecla Retornair paira executair esse command.

    Um shell é a principal interface que os users vêem quando fazem logon, cujo principal objective é iniciair outros programas. (Não sei se a metáfora original é que o shell é o ambiente doméstico paira o user, ou que o shell é o que outros programas estão executando.)

    Nos círculos unix, o shell se especializou em significair um shell de linha de command, centrado ao inserir o nome do aplicativo que quer iniciair, seguido dos nomes de files ou outros objects em que o aplicativo deve atuair e pressionando a tecla Enter. Outros types de ambientes (com a notável exception recente do Gnome Shell) geralmente não usam a palavra "shell"; Por exemplo, os sistemas de windows envolvem "gerenciadores de windows" e "ambientes de desktop", não um "shell".

    Se você o Google, você encontrairá muitas informações úteis sobre esse assunto.

    Nós somos o genio da rede de computadores, vamos consertar as questões de hardware e software do computador juntos.