O que acontece sem CLI e shell?

0

Posso dizer que o shell é um recurso do CLI, é um interpretador de linha de comando?

Sem qualquer shell, temos muitos problemas, mas é possível trabalhar com o sistema operacional. Por exemplo, em vez de ls i, deve usar /usr/bin/ls /full/path/to/current/place/

Sem o CLI, isso não é possível porque os usuários não têm nenhuma interface para falar com o kernel para fazer seus trabalhos?

Por favor, explique a diferença entre o shell e o CLI para responder a esta pergunta

    
por Sinoosh 05.10.2016 / 17:38

3 respostas

1

Interface vs Shell

Há muita confusão sobre o que é a Interface de Linha de Comando e o que é o Shell. Como foi mencionado nos comentários, o que quer que tenha a palavra "interface", é ideia ou teoria. Quando você ouvir a palavra "interface", pense em "idéia de comunicação com o computador". A interface pode ser entre dois computadores, como o cabo Ethernet, mas também entre o computador e o usuário .

Shell é essa teoria colocada em prática. CLI diz que o usuário interage com o computador via texto, e o shell faz exatamente isso. A interface gráfica do usuário diz "o usuário interage através de botões e ícones", e o GNOME ou o Unity fornecem isso. Um shell é atualmente um software, algum objeto que o usuário pode usar para interagir com o computador. "Interface" apenas apresenta uma ideia de como essa interação deve acontecer. Hoje em dia, eles são usados de forma intercambiável e "CLI" e "Shell" se tornaram sinônimos.

De volta ao dia, quando os computadores estavam usando rolos de papel para imprimir informações, a interface de linha de comando era a única ideia. Veja por exemplo este vídeo: link Claro que não há shell como bash ou ksh, mas há um shell mínimo que lê usuário comandos e processa-os.

O que acontece sem o CLI e o shell?

Pense nisso por um segundo: Por que precisamos de shell? Para interação do usuário! E quanto aos momentos em que não há necessidade de interação com o usuário? Então não há necessidade de shell. Um ótimo exemplo disso são máquinas de lavar roupa, impressoras sem fio, cafeteiras. Esses dispositivos já executam o kernel do Linux, mas não há necessidade de interagir com o usuário via texto. Precisamos perceber os pressionamentos de botões e mudanças de pressão e voltagem. Portanto, não há necessidade de interface shell / linha de comando. No entanto, ainda é possível obtê-lo através de técnicas inteligentes de engenharia / hacking: link

Pense nos chips microcontroladores. Eu trabalhei com chips PIC18 por exemplo. Esses caras apenas sentam em sua placa de circuito e sempre executam o código C. Não há necessidade real de ler comandos. Mas para o meu projeto eu conectei esse chip com Raspberry Pi, e estava enviando caracteres de texto como A, B, C para ele. Isso é interação do usuário! Você poderia argumentar que esse é um shell mínimo para se comunicar com o dispositivo.

Comunicação sem casca

Tecnicamente, quando você usa o shell, você não está se comunicando diretamente com o kernel. O Shell pode estar fazendo chamadas do sistema em seu nome. Em teoria, você poderia se comunicar com o kernel compilando e inserindo o módulo do kernel em C sem nunca usar o shell, mas isso seria altamente ineficiente e demorado.

    
por Sergiy Kolodyazhnyy 05.10.2016 / 20:05
1
O "shell" em seu sentido, penso eu, é considerado a interface pela qual você interage com sua máquina, seja um terminal, uma interface gráfica ou algum link direto de cérebro para máquina. Mais precisamente, pode-se dizer que o "shell" é o programa ( sh , bash , X11, Gnome, KDE, BrainLink 3.2, o que for) que faz interface com o hardware para permitir que você interaja com sua máquina.

Enquanto isso, o CLI (ou a interface de linha de comando) é um tipo de shell que permite acessar a linha de comando do sistema (daí a palavra interface ).

Como você descobriu, nem todos os shells são construídos da mesma forma. Alguns oferecem gráficos (como o X11 / Unity), enquanto alguns são apenas o acesso ao terminal, como o TTY médio. Mesmo dentro disso, esses shells podem diferir devido ao programa que os executa. Por exemplo, o /bin/sh shell é relativamente simples e oferece uma CLI básica, enquanto /bin/bash oferece mais capacidade far . Ambos ainda são tecnicamente shells, assim como alguns programas muito simples que apenas chamam exec() em qualquer coisa que você passe.

Mesmo sem um CLI, seu sistema ainda pode ser 100% útil. Tome o Windows ou o MacOS por exemplo. Nenhum deles realmente exige um CLI (e tenho certeza de que eles o removeriam completamente se pudessem), mas o sistema ainda é bastante utilizável.

Mantendo isso em mente, porém, o todo sistema tem uma linha de comando disponível, mas nem todo sistema tem uma interface de linha de comando aberta para você usar. Por outro lado, um shell (gráfico ou console) é necessário para que você possa interagir com sua máquina para executar programas arbitrários. Por exemplo, sua smart TV baseada em Linux é tecnicamente um "shell", pois pode executar aplicativos arbitrários, mas o seu parquímetro também executa o Linux embarcado não tem essa necessidade de um shell voltado para o público (ou mesmo privado).

    
por Kaz Wolfe 05.10.2016 / 18:24
0

O Shell é uma função freqüentemente usada por programadores para chamar um programa externo de dentro de seu aplicativo. O mesmo programa pode ser digitado no CLI. Ao fazer isso, pode ser chamado de "descascar". A saída do programa externo é geralmente redirecionada para um arquivo de trabalho que o programa de chamada abre quando o programa "shelled" é concluído.

Um cenário simples que uso diariamente é de dentro do Libre Office Calc para executar uma centena de comandos bash e armazenar a saída na planilha.

    
por WinEunuuchs2Unix 05.10.2016 / 19:27