Última atualização em 09/07/2023
As interfaces de linha de comando também são chamadas de interfaces de usuário de linha de comando, interfaces de usuário de console e interfaces de usuário de caracteres. As CLIs aceitam como comandos de entrada que são inseridos pelo teclado; os comandos invocados no prompt de comando são então executados pelo computador.
Hoje, a maioria dos fornecedores oferece a interface gráfica do usuário (GUI) como padrão para sistemas operacionais (SOs), como Windows, Linux e macOS. A maioria dos sistemas atuais baseados em Unix oferece uma interface de linha de comando e uma interface gráfica de usuário.
O sistema operacional MS-DOS e o shell de comando no sistema operacional Windows são exemplos de interfaces de linha de comando. Além disso, plataformas de desenvolvimento de linguagem de programação, como Python, podem oferecer suporte a interfaces de linha de comando.
A linha de comando caiu em popularidade após a introdução de sistemas operacionais de computadores pessoais baseados em GUI, como o Microsoft Windows e o Mac OS “clássico” da Apple na década de 1980. A linha de comando continua sendo uma ferramenta importante para profissionais de TI, desenvolvedores de software, administradores de sistema, administradores de rede e muitos outros que preferem uma interface mais precisa e reproduzível para seus sistemas.
O que é um shell?
Na computação, um programa shell fornece acesso aos componentes de um sistema operacional. O shell oferece aos usuários (ou outros programas) uma maneira de entrar “dentro” do sistema para executar programas ou gerenciar configurações. A casca define a fronteira entre o interior e o exterior.
A seguir estão os dois tipos de shells do sistema operacional:
- Os shells baseados em CLI oferecem aos usuários um modo conciso e eficiente de interação com o sistema operacional, sem exigir a sobrecarga de uma interface gráfica de usuário.
- Os shells baseados em GUI são considerados mais fáceis de usar para iniciantes, mas também incluem um shell baseado em CLI para administradores de sistema ou usuários avançados que preferem interagir em um prompt de comando.
Bash é o shell de linha de comando mais usado para sistemas operacionais baseados em Unix, incluindo Linux.
O software que lida com a interface de linha de comando é comumente chamado de interpretador de linguagem de comando, processador de comando ou interpretador de comando. Dois shells CLI bem conhecidos são PowerShell para Windows e Bash para Linux e macOS.
Os shells são a camada mais externa do sistema operacional e geralmente são separados do kernel do sistema operacional subjacente . Um shell funciona como um aplicativo e pode ser substituído conforme necessário. Um SO pode ter mais de um shell disponível, como nos exemplos a seguir:
- O Microsoft Windows inclui o aplicativo Prompt de Comando e o aplicativo PowerShell, que podem ser usados para interagir diretamente com o computador. O Windows Subsystem for Linux também fornece uma CLI com acesso ao sistema subjacente.
- Linux e outros sistemas operacionais baseados em Unix geralmente fornecem o Bourne-Again Shell (bash) como o shell padrão. Outros shells, incluindo o shell C, shell Z e outros, podem ser configurados como shell do sistema padrão.
Como o shell está apenas uma camada acima do SO, os usuários podem realizar operações que não estão disponíveis em outros tipos de interface, como mover arquivos dentro de pastas do sistema e excluir arquivos bloqueados.
Para obter o maior benefício do uso de um shell CLI, os usuários devem aprender uma linguagem de script. A maioria dos shells de linha de comando pode salvar sequências de comandos em um script ou arquivo de lote que pode ser totalmente programável. O script de shell é a base da automação básica de gerenciamento de sistemas.
Leia também: O Que é HTML? Guia Básico Para Iniciantes
Como funcionam as CLIs?
Quando um sistema de computador está em execução, sua CLI é aberta em uma tela em branco com um prompt de comando e os comandos podem ser inseridos.
Os tipos de comandos CLI incluem o seguinte:
- comandos do sistema que são codificados como parte da interface do sistema operacional;
- programas executáveis que, quando invocados com sucesso, executam aplicativos gráficos ou baseados em texto ; e
- programas em lote (ou arquivos em lote ou scripts de shell ) que são arquivos de texto que listam uma sequência de comandos. Quando invocado com sucesso, um programa em lote executa seus comandos que podem incluir comandos do sistema e programas executáveis.
A CLI é mais do que um simples sistema de comando/resposta, pois a maioria possui recursos adicionais que tornam um preferível ao outro. Alguns recursos incluem o seguinte:
- O recurso de script permite que os usuários escrevam programas que podem ser executados no sistema a partir da linha de comando.
- Os tubos de comando permitem que os usuários direcionem a saída de um programa para ser a entrada para outro programa (“encaminhando” o fluxo de dados).
- As variáveis do sistema podem ser definidas na linha de comando ou os valores dessas variáveis exibidos.
- Os recursos de histórico de comandos permitem que o usuário recupere comandos anteriores emitidos. Alguns salvam o histórico de comandos da sessão (como o PowerShell), outros podem ser configurados para armazenar o histórico da sessão por mais tempo (como o bash).
Comandos e sintaxe para CLIs tendem a ser muito estáveis ao longo do tempo, em parte para permitir a compatibilidade com versões anteriores de scripts.
Leia também: O que é PHP? Guia Básico de Programação
Avisos e comandos
Dependendo do sistema operacional e da CLI, pode haver centenas ou até milhares de comandos executáveis diferentes disponíveis. O conjunto de comandos pode variar drasticamente entre sistemas operacionais ou aplicativos.
Por exemplo, a Microsoft define centenas de cmdlets como “comandos leves” a serem usados no PowerShell; As funções do PowerShell são listas de cmdlets que podem ser executados na linha de comando.
Alguns comandos são executados na linha de comando sozinhos, como o comando dir:
C:\> diretório
Os comandos também podem ser usados com argumentos (às vezes chamados de parâmetros) que modificam como o comando deve ser executado. Os argumentos seguem o comando e fornecem detalhes ou especificidades adicionais.
O comando cd “change directory” em muitas CLIs é usado para alterar o diretório de trabalho atual quando o novo caminho de diretório desejado é incluído como um argumento – mas em alguns casos (como no MS-DOS ou no prompt de comando do Windows) o comando por ele mesmo retorna o diretório de trabalho atual.
Este comando redefine o diretório de trabalho atual:
cd \documents\usuário\trabalho
Os argumentos permitem que os usuários de linha de comando obtenham resultados muito específicos que às vezes não estão disponíveis por meio de uma interface gráfica.
As CLIs modernas fornecem pipes ou mecanismos para obter a saída de um comando e enviá-la como entrada para outro comando. A barra vertical, ou “|” símbolo, é frequentemente usado para este fim.
O seguinte “one-liner” usa pipes para encadear vários comandos do PowerShell para recuperar informações detalhadas de configuração de rede de uma máquina Windows:
Get-NetIPAddress | Classificar Índice de Interface | FT InterfaceIndex, InterfaceAlias, AddressFamily, IPAddress
Mesmo que essa string seja inserida na linha de comando como se fosse um único comando, ela inclui os seguintes comandos consecutivos:
- Get-NetIPAddress recupera todas as informações de configuração de IP do computador quando inseridas sem nenhum argumento.
- Sort InterfaceIndex aceita como entrada a saída do cmdlet Get-NetIPAddress e a classifica pelo valor InterfaceIndex associado a cada endereço IP incluído na configuração do computador.
- FT InterfaceIndex, InterfaceAlias, AddressFamily, IPAddress usa o comando Format-Table (FT) para formatar a saída classificada do comando anterior e exibe os valores especificados para cada endereço IP.
A compatibilidade com versões anteriores geralmente é um objetivo quando novas CLIs são introduzidas para substituir as CLIs existentes, como quando a Microsoft substituiu o MS-DOS pelo prompt de comando do Windows. Embora alguns comandos do MS-DOS não sejam mais suportados, a maioria ainda funcionará no PowerShell como pretendido originalmente.
Os comandos comuns do MS-DOS incluem o seguinte:
Comando | Exemplo | Notas |
CD | C:\> CD \usuário\programas C:\usuário\programas> |
Altera o diretório atual para o caminho especificado. Quando inserido sem caminho, exibe o nome do diretório de trabalho atual. Se o caminho estiver incluído no prompt de comando, o prompt será alterado como no exemplo (consulte também PROMPT, abaixo). |
CHKDSK | C:\> CHKDSK a: | Verifica o disco especificado — neste caso, o disquete na unidade A: — e retorna um relatório de status mostrando o tamanho do disco, o número de arquivos e diretórios em uso e o número de bytes usados. |
CÓPIA DE | C:\> COPIAR autoexec.bat autoexec.BAK | Copia o arquivo ou arquivos especificados. Pode ser usado para copiar arquivos para duplicatas com nomes de arquivos diferentes ou para copiar arquivos em um diretório diferente sem alterar os nomes. |
DEL | C:\> DEL autoexec.BAK C:\> DEL C:\backups\*.BAK |
Exclui um arquivo ou arquivos. Pode ser usado para excluir arquivos no diretório de trabalho atual ou em algum outro diretório. Também pode ser usado com caracteres curinga para excluir grupos de arquivos. |
DIR | C:\> DIR C:\> DIR c:\backups\*.txt |
Exibe todo o conteúdo — arquivos e diretórios — no diretório especificado. Se nenhum diretório for especificado, ele se refere ao conteúdo do diretório atual. Também pode ser usado com caracteres curinga para exibir apenas arquivos específicos. |
EDLIN | C:\> edlin autoexec.bat | Inicia o edlin, um editor de linha que pode ser usado para editar arquivos de texto. Neste exemplo, ele está sendo usado para editar o arquivo autoexec.bat. |
FORMATO | C:\> FORMATO a: | Formata um disco para que possa ser usado com o MS-DOS. |
MKDIR | C:\> MKDIR c:\NewDIR | Cria um novo diretório no caminho especificado. |
MAIS | C:\> MAIS autoexec.bat | Exibe o conteúdo de um arquivo, uma tela por vez. É usado principalmente para arquivos de texto. |
INCITAR | C:\> prompt $p $d$g C:\UTIL Sex 11-05-2021> |
Modifica o prompt padrão. Neste exemplo, os parâmetros são usados com o comando para definir a exibição do prompt como a unidade e o caminho atuais, o dia e a data e o símbolo de maior que. O prompt resultante é mostrado no exemplo. |
RMDIR | C:\> rmdir c:\backup | Remove um diretório. |
TIPO | C:\> digite autoexec.bat | Exibe o conteúdo de um arquivo de texto, sem quebras de página. |
CLI versus GUI
A interface gráfica do usuário é a interface de usuário mais popular atualmente. Uma GUI usa janelas, menus e ícones para executar comandos. Usar um mouse é a maneira mais comum de navegar por uma GUI, embora muitas GUIs permitam alguma navegação e execução de programas por meio de um teclado.
O Microsoft Word é um exemplo de aplicativo baseado em GUI. Um usuário pode alterar as opções de layouts e estilos de página selecionando o ícone correspondente ou o menu suspenso com um mouse ou teclado.
Uma vantagem de uma GUI é que a interface pode exibir visualmente as funções disponíveis. No entanto, por depender de exibição gráfica, uma GUI pode não ter o mesmo nível de funcionalidade e controle granular de uma interface de linha de comando. Por exemplo, pode exigir vários cliques e movimentos por várias caixas de diálogo em uma GUI para obter o mesmo resultado como uma única linha de comando.
Além disso, as GUIs não suportam prontamente scripts ou automação . Para tarefas comuns, um usuário deve repetir cada clique ou navegar em cada diálogo dentro da GUI manualmente.
Os administradores de sistema que podem precisar gerenciar centenas – ou centenas de milhares – de sistemas e configurações acharão uma GUI muito menos eficiente do que uma CLI. Um simples comando CLI pode ajustar facilmente as configurações de um grande grupo de sistemas de uma só vez.
Comandos e argumentos também podem ser combinados e salvos, e então executados como um script sempre que uma ação específica – ou um conjunto abrangente de ações – for necessária. A CLI é a ferramenta preferida para muitas tarefas de gerenciamento de sistemas em toda a empresa.
Vantagens e desvantagens da CLI
A seguir estão as vantagens de uma interface de linha de comando:
- controle granular de um sistema operacional ou aplicativo;
- gestão mais eficiente de um grande número de sistemas;
- capacidade de armazenar scripts para automatizar tarefas regulares; e
- o conhecimento básico da interface de linha de comando pode permitir a solução de problemas de conexão de rede ou a resolução de outras tarefas do sistema.
As desvantagens de uma interface de linha de comando são as seguintes:
- GUI é mais amigável;
- curva de aprendizado mais acentuada associada à memorização de comandos e sintaxe/argumentos complexos; e
- diferentes comandos usados em diferentes shells.
A linha de comando é um ótimo lugar para se tornar um especialista no uso de um computador. Quando estiver pronto, também é o único lugar para aprender a escrever scripts de shell.