Gui vs cli

Uma outra razão além das fornecidas, embora implícita em algumas respostas. A função GUI pode chamar um comando da CLI ou duplicar o esforço do comando da CLI - de qualquer forma, há mais código envolvido para concluir o trabalho simplesmente porque uma interface do usuário mais elaborada está envolvida. Mais código -> mais chances de erros interferirem no que você está tentando fazer.

Rapidez.

Às vezes, é mais rápido digitar as coisas do que navegar pela interface do usuário (sem mencionar que a CLI é muito mais responsiva; além disso, ajuda quando sua CLI tem preenchimento automático ou pesquisa de histórico).

Além disso, e mais importante, acelere a automação. Você pode agrupar vários comandos para criar trabalhos complexos.

Isenção de responsabilidade: O sistema operacional * DEVE * não ser de M $, porque eles têm um

Em certas tarefas, você pode executá-las 10 a 100 vezes mais rápido (e, em alguns casos, é impossível a partir de uma GUI e / ou uma GUI seria tão * INCONVENIENTE *, é essencialmente impossível). Mas, para alguns aplicativos, como navegar na web, aplicativos de escritório, jogos, etc., você * DEVE * ter uma GUI. Faça o que quase todos os desenvolvedores modernos que não são macacos treinados na faculdade usam os dois ao mesmo tempo e aprendem por si mesmos o que é melhor.

Como eu disse, existem certas coisas que são possíveis (ainda não leas). Este é o Santo Graal da interação humano-computador, que consiste em ter uma linguagem de programação visual 100% compreensível para uma criança, mas que é poderosa o suficiente para escrever 100% dos um SO distribuído em.

Supondo que a GUI e a CLI estejam disponíveis, e você tenha conhecimento da CLI:

  • mais rápido para digitar do que para mouse ou toque
  • scripts e macros para tarefas comuns
  • Os comandos são repetíveis, não apenas para scripts, mas também para fornecer instruções. copiar e colar amigável.

Para a maioria das tarefas, pode ser muito mais rápido usar uma linha de comando do que uma GUI. A execução de tarefas na linha de comando tem uma sobrecarga significativamente menor, porque uma interface não precisa ser renderizada, apenas solicitações e comandos simples.

Um ótimo exemplo disso é o Git. Compare a velocidade de um cliente Git com os comandos da linha de comando Git e você verá uma diferença drástica de velocidade em termos de empurrar e puxar especialmente.

Se você é um digitador rápido, a linha de comando sempre será mais rápida que um teclado e mouse.

Outra vantagem para uma CLI em vez de uma GUI, além das já mencionadas: você pode usá-la remotamente na Internet com muito menos largura de banda.

O uso de uma GUI em uma rede geralmente requer protocolos complicados, como o protocolo Remote Desktop da Microsoft, o protocolo X11 no Unix ou aplicativos proprietários de "compartilhamento de tela", como

Copilot Fog Creek

. Ele também apresenta um desempenho ruim em comparação com uma GUI gerada localmente, pois todos os dados a serem exibidos precisam ser transferidos pela rede. (Os protocolos empregam otimizações, é claro, mas isso pode lhe custar muito. E, embora seja verdade que os aplicativos GUI do Unix na área de trabalho realmente usem o protocolo X11, eles tiram proveito de inúmeras extensões, como o uso de memória, para acelerar operações localmente ... extensões que não estão disponíveis em um ambiente de rede.)

Por outro lado, uma CLI pode ser usada sobre o equivalente a uma conexão de terminal serial ... em termos da Internet, uma sessão Telnet. (O Telnet agora é geralmente considerado inseguro e desatualizado; na maioria das vezes, as pessoas usam o SSH, o que fornece uma instalação semelhante, mas protegida por criptografia.) É necessária muito pouca largura de banda e muito pouco poder de processamento no lado do cliente. Obter uma conexão com meu servidor de arquivos local, meus servidores Web baseados na nuvem ou as VMs de desenvolvimento da minha empresa é tão fácil quanto abrir uma janela do terminal e digitar um comando "ssh" para acessar o host apropriado. Eu faço isso rotineiramente várias vezes ao dia.

Obviamente, a desvantagem é que você precisa trabalhar com uma CLI e digitar comandos em vez de ter uma GUI na qual pode clicar em botões e olhar para fotos bonitas. No entanto, é aqui que as outras vantagens de uma CLI entram em jogo, permitindo que você faça as coisas em muito menos tempo do que mexer com uma GUI ... "luz de funcionamento sem overbyte", para emprestar o lema original do Dr. Dobb's Diário.

Gorjeta: Daniel Catalan para a A2A.

Obrigado pela A2A.

A primeira e principal vantagem da CLI é a velocidade. Isso tem vários motivos:

  • O código é mais polido, depurado e mais curto que as ferramentas GNU. Você deve se lembrar que a maioria das ferramentas de shell existe desde os anos 80. Não usamos as ferramentas originais agora, antes usamos o remake do GNU. Essas ferramentas GNU (as principais, como cp, mv, ls,…) já existem há muito tempo. O código foi revisado centenas de vezes desde então, e geralmente é rápido e compacto.
  • Não há sobrecarga gráfica. Mesmo quando o laptop está ocioso, há alguma função em execução que atualiza continuamente a GUI. Basta olhar para a tela sem pressionar uma tecla e assistir a atualização do relógio, por exemplo. Esse feed contínuo ocorre copiando bytes da memória principal para a memória de vídeo, e isso aumenta o tráfego no barramento do sistema. As ferramentas da CLI geralmente não precisam disso, pois a tela é atualizada apenas quando necessário. Até o cursor piscante é renderizado pelo driver VGA (não nos terminais emulados).
  • As CLIs geralmente fazem o trabalho e fornecem um valor de retorno sem problemas, a menos que você selecione o modo detalhado. Cabe ao chamador examinar o valor de retorno e determinar o sucesso da falha.
  • Muitas ferramentas de GUI são apenas front-ends para seus equivalentes de CLI. Isso significa que eles realizam dois trabalhos, no lugar de um, para obter o mesmo resultado.

Isso é bom em termos de desempenho. Há outros motivos também:

  • A documentação geralmente é completa e fácil de encontrar. O projeto GNU possui padrões de codificação que determinam que cada pacote deve ter uma opção de ajuda da linha de comando (-h e --help), uma página de manual e uma página de informações. Nem todas as ferramentas da CLI cumprem as regras, mas a maioria obedece. Por outro lado, não conheço um padrão que force as ferramentas da GUI a terem documentação. Depende do programador, até onde eu sei.
  • A filosofia Unix do KISS (Keep It Simple, Stupid) determina que cada ferramenta faz apenas um trabalho e deve fazê-lo bem. Em seguida, você pode combinar essas ferramentas por meio de canal e redirecionamento. Isso facilita a vida do programador. Não é tão fácil com as ferramentas da GUI.
  • Algumas ferramentas, especialmente as ferramentas de administrador, não possuem front-ends da GUI. Você precisa usar a linha de comando.
  • Se o servidor de gráficos travar por qualquer motivo, você está ferrado. Por outro lado, o sistema garante que você tenha (pelo menos) um terminal no modo de recuperação para consertar o sistema.
  • Muitos sistemas (por exemplo, servidores, sistemas embarcados) não têm o luxo (ou às vezes a capacidade) para acomodar uma interface gráfica.
  • Trabalhar no terminal faz com que você pareça nerd e hacker (este é apenas por diversão).