CLI: o que é, para que serve e como usar a Interface de Linha de Comandos

CLI: o que é, para que serve e como usar a Interface de Linha de Comandos

Introdução: CLI - Interface de Linhas de Comando

Quando falamos de CLI (interfaces de linha de comando), logo imaginamos um computador com uma tela preta repleta de textos em cor verde, no estilo do filme Matrix. Essa imagem remete a hackers e gênios da computação.

Gif animado da famosa tela preta com letras verdes descendo em cascata do filme Matrix.

Fonte: Giphy

Entretanto, as interfaces de linha de comando são uma ferramenta muito presente no dia a dia das mais diversas pessoas que trabalham com tecnologia. Elas oferecem flexibilidade e eficiência para lidar com sistemas computacionais.

Neste artigo, você aprenderá o que é uma interface de linha de comando, para que elas servem, qual a sua origem, quais as diferenças entre shell, interface de linha de comando e terminal, como acessá-las, utilizá-las, quais as diferenças entre interfaces de linha de comando e interfaces gráficas e muito mais.

Bora lá?

Banner de divulgação da Imersão IA da Alura em colaboração com o Google. Mergulhe em Inteligência artificial com a Alura e o Google. Serão cinco aulas gratuitas para você aprender a usar IA na prática e desenvolver habilidades essenciais para o mercado de trabalho. Inscreva-se gratuitamente agora!

O que é CLI?

CLI é a sigla de Command-Line Interface, que traduzido significa “Interface de Linha de Comando”. As CLIs são uma forma de interação do usuário com o computador, que é feita através de comandos de texto. O que possibilita a execução de várias tarefas.

O funcionamento das CLIs é baseado em texto, dessa forma elas não possuem elementos visuais como diferentes janelas, ícones e botões. A representação visual das CLIs são as famosas telas pretas repletas de textos em outra cor, que comumente chamamos de terminal.

Recorte de tela com o terminal de comando do Windows

Para utilizar as CLIs, os usuários digitam comandos específicos, seguidos ou não de argumentos e opções, através do teclado e pressionam a tecla Enter para executá-los. Um programa interpretador de linha de comando será responsável por processar o texto inserido e executar uma ação.

Ao contrário do que se pode pensar, não existe uma única CLI com comandos fixos. Diferentes programas e bibliotecas disponibilizam suas próprias CLIs com diversas opções de comandos, como por exemplo, ferramentas de versionamento de código, serviços em nuvem, gerenciadores de versões, entre outros.

Desse modo, cada CLI possui uma lista de comandos e opções próprias. Por vezes, diferentes CLIs podem ter comandos semelhantes para as mesmas tarefas.

Apesar de normalmente não serem usadas por pessoas que atuam fora da área de tecnologia, as CLIs são úteis e necessárias no cotidiano de devs e outras pessoas profissionais que atuam em áreas como administração de sistemas e banco de dados, engenharia de rede, segurança cibernética, DevOps, análise de dados e tecnologia da informação de forma geral.

Como desenvolver boas práticas de programação? com Fabio Akita | #HipstersPontoTube

Afinal, com as CLIs é possível interagir de forma eficiente com os sistemas de computador, facilitando a execução de tarefas repetitivas através de automação, permitindo o acesso remoto a diversos sistemas, entre várias outras funções.

Ficou curioso para entender mais sobre CLIs?

Vamos voltar um pouco no tempo para compreender como elas surgiram!

As origens das CLIs

As Interfaces de Linha de Comando tiveram início em meados das décadas de 1960 e 1970, quando os primeiros sistemas operacionais baseados em texto estavam surgindo. Nesse período, não existiam interfaces gráficas de usuário (GUI) e os periféricos disponíveis eram o teclado e o monitor, que exibia apenas texto. Assim os computadores eram usados através das CLIs.

Um computador antigo sem mouse com Unix como sistema operacional.

O sistema operacional precursor no uso dos CLIs foi o UNIX, criado no final dos anos 1960 por uma equipe da AT&T Bell Labs. Com o UNIX, era possível interagir com o computador usando comandos de texto por meio do terminal, em que um shell interpretava e executava as CLIs.

O Shell é um tipo de programa que possibilita o acesso a recursos do sistema operacional, como gerenciamento de arquivos, execução de programas, configuração de ambiente e automatização de tarefas através da interpretação de comandos de texto. Ou seja, o Shell chama CLIs para executar diversas atividades em um sistema. Veremos, mais adiante, detalhes dessa relação entre Shell e CLIs.

O MS-DOS, criado em 1981 pela Microsoft, foi outro sistema operacional que desempenhou um papel importante no desenvolvimento das linhas de comando. As interações nesse sistema eram feitas por meio do Command Prompt, o interpretador de linha de comandos (um tipo de shell) do Windows.

Captura do MS-DOS do Windows

Com o passar dos anos, diversos sistemas operacionais baseados em UNIX foram desenvolvidos, como o Linux, BSD (Berkeley Software Distribution) e o MacOS. Atualmente esses sistemas são bem mais conhecidos e mantêm o uso da CLI como uma peça essencial para a interação com o sistema operacional.

Já na década de 1980, foram criadas as primeiras interfaces gráficas de usuário (GUIs). O Macintosh foi o principal responsável pela popularização das GUIs e dos mouses. Ele foi criado em 1984, pela Apple, com o intuito de ser o primeiro computador pessoal que combinava o uso do mouse com as interfaces gráficas.

Imagem de um Macintosh

Com isso, as interfaces gráficas ganharam força e foram substituindo as CLIs. As janelas, ícones, menus e botões tornaram a interação do usuário com o computador bem mais intuitiva. Assim, bastava usar o mouse para apontar e clicar no que estivesse na tela para realizar ações.

Apesar de nos dias de hoje, as interfaces gráficas dominarem os computadores pessoais, as CLIs continuam sendo largamente utilizadas pelas pessoas que trabalham com tecnologia, devido a sua maior eficiência, controle e flexibilidade para a realização de algumas tarefas. As CLIs também continuam sendo a única forma de utilização de grande parte das bibliotecas e ferramentas que usamos no dia a dia do desenvolvimento de software.

É normal que os sistemas operacionais atuais ofereçam tanto o uso da interface gráfica quanto da linha de comando, o que mostra que as CLIs continuam sendo fundamentais na computação.

No tópico a seguir, descubra mais sobre a função das CLIs atualmente!

Para que servem as CLIs?

As CLIs podem ser usadas para diferentes propósitos. Diversos comandos e programas podem ser executados por linha de comando, permitindo a realização de uma ampla variedade de tarefas. As principais atividades realizadas através das CLIs são:

  • Automatização de tarefas: Um uso muito comum das CLIs é na automação de tarefas repetitivas, é possível fazer isso de forma amigável. A linha de comando permite a execução de scripts para a realização de tarefas como a manipulação de arquivos em massa, backup e restauração de dados, configuração de sistemas, entre outras atividades que são feitas com frequência na rotina de pessoas que trabalham com tecnologia.

  • Desenvolvimento de software: As CLIs são bastante usadas por devs na compilação, depuração e teste de programas. As IDEs (ambientes de desenvolvimento integrado), geralmente, têm suporte ao uso de linha de comando, o que auxilia o fluxo de trabalho.

  • Administração de sistemas: Devido ao alto grau de flexibilidade e controle que as CLIs fornecem, elas também são úteis para a gestão de servidores e redes por pessoas administradoras de sistemas. A interface de linha de comando permite a instalação e atualização de softwares, o monitoramento de recursos, a configuração de parâmetros do sistema, o gerenciamento de usuários, entre outras funcionalidades.

  • Acesso remoto a sistemas: Sistemas remotos como servidores, por vezes não possuem interface gráfica disponível ou estão geograficamente distantes. Nesse sentido, as CLIs possibilitam o acesso e interação com esses sistemas remotos por meio de uma conexão de rede, de forma flexível, eficiente e segura.

São inúmeras as possibilidades de uso das interfaces de linha de comando. Mesmo com as interfaces gráficas sendo hoje a principal forma de uso dos computadores, as CLIs continuam sendo usadas em diferentes tarefas.

Até agora, aprendemos sobre as CLIs, o que elas fazem e como estão intimamente ligadas aos sistemas operacionais. Mas quem é o responsável por essa conexão entre o sistema operacional e a linha de comando?

Descubra mais sobre isso a seguir!

Shell - A Base da CLI

Shell é um tipo de programa especial, pois permite que pessoas ou até mesmo outros programas interajam diretamente com o sistema operacional.

Caso você tenha interesse em aprender mais sobre sistemas operacionais e queira se aprofundar, aqui na Alura nós temos o artigo: Sistemas operacionais: conceito e estrutura.

Essa interação acontece da seguinte forma: o Shell recebe comandos de texto do usuário através de um terminal (a famosa tela preta), analisa e interpreta esses comandos e, em seguida, chama a CLI correspondente para executar a ação referente ao comando fornecido. A saída dessa ação é exibida para o usuário através do terminal.

Ou seja, com o shell nós temos um ambiente que fornece recursos e utilitários que possibilita rodar comandos, executar programas e até mesmo scripts, manipular pastas e arquivos, gerenciar processos, configurar o ambiente de trabalho, entre várias outras coisas.

Então shell, CLIs e terminal não são a mesma coisa? Não! Apesar de ser comum o uso dessas três palavras para se referir a mesma coisa, devido ao seu trabalho em conjunto para permitir a interação do usuário com o sistema operacional, elas têm papéis distintos.

Qual a diferença entre Shell, CLI e Terminal?

Vamos recapitular as principais diferenças entre Shell, CLIs e Terminal:

  • Shell: é um programa que permite que o usuário interaja com o sistema operacional, através de comandos de texto e interprete os comandos inseridos. Existem diferentes shells disponíveis, como o Bash, o PowerShell, entre outros.

  • CLIs: são quaisquer interfaces onde a interação é baseada em comandos de texto. Assim, as interfaces de linha de comando são programas que realizam ações e operações específicas relacionadas ao comando informado.

As CLIs são usadas pelos shells, mas também existem outros tipos de CLIs, como as interfaces que permitem o uso de sistemas de nuvem, as CLIs para acesso a sistemas de controle de versão de softwares, CLIs de redes, entre outros.

  • Terminal: é o programa que fornece uma janela, ou seja, um ambiente visual para que o usuário interaja com o shell e as CLIs. Nele que são de fato inseridos os comandos e exibidas as saídas para o usuário.

Na imagem abaixo temos dois fluxogramas que exemplificam bem a relação do Shell, CLI e Terminal:

Na imagem há dois fluxogramas. O primeiro é o "Fluxo de execução de um comando git init": em que a CLI executa a tarefa relativa ao programa (Git), o Shell interpreta os comando sendo o git o nome do argumento e init o argumento em si. O terminal (ou emulador) recebe o input git init e retorna o output "initialized empty git repository</>". Já o segundo fluxograma apresenta o "Fluxo de execução de um comando node index.js" sendo o conteúdo do arquivo index.js: console.log(‘Olá, mundo’): a CLI executa a tarefa através das funcionalidades do Node.js, o Shell interpreta os comandos node como nome do argumento e index.js como o argumento, e o terminal (ou emulador) recebe o input node index.js e retorna o output "Olá, mundo".

No primeiro fluxograma, temos o comando git init que é usado para criar um repositório Git e no segundo, temos o comando node index.js, usado para executar o código contido no arquivo index.js.

Cada comando é digitado no terminal, o shell interpreta esse comando e a CLI correspondente é chamada para executar a tarefa relacionada ao comando. O resultado dessa tarefa é enviado para o shell, e por fim o terminal exibe esse resultado na tela.

Quer entender mais sobre o shell e como utilizá-lo na automação de tarefas? Temos aqui na Alura a Formação Shell Scripting: automatize tarefas que vai te ajudar com isso.

Como vimos anteriormente, não existe um único shell, mas sim vários. Cada um com suas características e ferramentas próprias. Eles desempenham um papel fundamental para a interação entre os usuários e sistemas operacionais, por isso é importante para as pessoas de tecnologia entender quais são os principais shells, quais seus aspectos próprios e como utilizá-los. É isso que vamos abordar na sequência!

Principais tipos de Shell

Para cada sistema operacional existe uma gama de diferentes shells que podem ser utilizados. Cada shell tem suas próprias particularidades, podendo cada um possuir comandos diferentes para realizar a mesma tarefa. Entretanto, a forma que esses comandos funcionam é bem semelhante.

Os dois tipos de shell padrão nos sistemas operacionais são: o Prompt de Comando do Windows e o Bash utilizado tanto nos sistemas Linux, quanto no macOS.

Além dos shells padrão, vamos nos aprofundar um pouco mais em shells populares de cada sistema operacional e discutiremos sobre algumas ferramentas úteis para o uso de shells.

Prompt de Comando

O Prompt de Comando, também conhecido como CMD ou Windows Command Prompt, é o shell padrão disponibilizado pelo sistema operacional Windows.

Ao abrir o Prompt de Comando, um terminal preto aparece na tela e nele é possível digitar comandos específicos do Windows que permitem executar tarefas e acessar os recursos do sistema operacional.

Captura de tela do Prompt de Comando do Windows. Os textos indicam o caminho para um diretório no Windows.

Caso você queira aprender mais sobre o Prompt de Comando do Windows, recomendamos o curso Windows Prompt: utilizando o CMD aqui da Alura.

PowerShell

O PowerShell é um shell criado pela Microsoft. Ele é usado principalmente em sistemas Windows, mas também pode ser utilizado nos sistemas Linux e macOS.

Captura de tela do terminal do PowerShell no Windows. Mostra uma tela preta com os textos em letras brancas. Exibe o caminho para um diretório no Windows.

O PowerShell oferece uma linguagem de script muito poderosa e orientada a objetos. Isso significa que o Powershell, diferente de outros shells como o Prompt de Comando do Windows, trata as informações fornecidas pelo usuário como objetos manipuláveis, ao invés de simples texto.

Além disso, o Powershell fornece recursos avançados para facilitar a execução e automação de tarefas, como:

  • Pipeline para comandos de encadeamento: permite que comandos sejam usados em sequência, em que a saída de um comando é usada como entrada para o próximo. Isso simplifica tarefas de manipulação e processamento de dados.

  • Suporte ao gerenciamento remoto: possibilita a execução de comandos e scripts em computadores remotos por meio de protocolos como o PowerShell Remoting ou o Windows Management Instrumentation (WMI).

  • Comandos integrados do tipo cmdlets: permitem a realização de tarefas específicas, seguindo uma convenção especial de nomenclatura que utiliza verbos e substantivos. Um exemplo disso é o Get-Process, que é usado para obter as informações sobre os processos em execução.

Além disso, é possível criar seus próprios cmdlets, com funções e módulos para expandir a capacidade de automação de tarefas.

  • Histórico de linha de comando robusto: permite que os comandos anteriores de uma sessão sejam acessados facilmente. Além disso, ele ainda possui a pesquisa incremental, onde é possível pesquisar comandos anteriores com base em palavras-chave. Entre vários outros recursos.

Devido ao seu poder e recursos avançados, o Powershell se tornou muito popular entre pessoas administradoras de sistemas, devs e usuários avançados. Tornando-se, em alguns casos, um substituto do Prompt de Comando Windows.

Caso tenha interesse em se aprofundar em Powershell, temos aqui na Alura a Formação PowerShell: automatize suas tarefas.

Bash

Bash é abreviação de “Bourne Again Shell”, um shell de código aberto criado pela Free Software Foundation. O Bash é muito popular, sendo o shell padrão de diversas distribuições Linux e de algumas versões do macOS.

Captura de tela do Bash no Ubuntu. Mostra uma tela de terminal na cor roxa com os textos do terminal em verde.

A partir da versão do macOS Catalina 10.15, o Bash deixou de ser o shell padrão, sendo substituído pelo Zsh (Z Shell). No entanto, o Bash continua disponível e presente no macOS.

Captura de tela do Zshell no macOS. Mostra um terminal na cor branca, com os textos na cor preta.

Outros shells comuns em Linux

Confira a seguir, uma lista de outros shells que também são usados, principalmente em sistemas baseados em Linux:

  • Zsh (Z Shell): É comumente usado por pessoas que possuem familiaridade e experiência com Linux e Unix, devido à presença de recursos, como correção ortográfica, autocompletar, histórico de comandos aprimorado e flexibilidade para personalização.

Como citamos anteriormente, o Z Shell é o shell padrão do macOS a partir da versão Catalina 10.15.

  • Csh (C Shell): Criado para os sistemas operacionais baseados em Unix e Linux, esse shell apresenta uma sintaxe bastante parecida com a linguagem de programação C.

  • Ksh (Korn Shell): Usado com frequência em sistemas baseados em Linux e Unix, o Ksh fornece uma variedade de recursos que são uma combinação das funcionalidades do csh (C Shell) com o sh (Bourne Shell), sendo uma CLI comum em sistemas Unix.

Esses são apenas alguns dos shells mais populares, porém existem muitos outros disponíveis como o Ash (Almquist Shell), Dash (Debian Almquist Shell), Tcsh (Tenex C Shell), Fish (Friendly Interactive Shell), entre outros.

Além dos inúmeros shells que temos à disposição, também temos uma série de ferramentas para Windows que podem tornar mais fácil o uso desses shells, independente de terem sido projetados para Windows ou Linux. Vamos conferir quais são essas ferramentas.

Ferramentas úteis para uso de shells no Windows

Existem algumas ferramentas que podem facilitar o uso de diferentes shells no sistema operacional Windows. Veremos quais são essas ferramentas a seguir.

Windows Terminal

A partir do Windows 10 temos disponível o Windows Terminal, que fornece uma interface de linha de comando mais moderna, flexível e poderosa.

O Windows Terminal permite a execução de diferentes shells, como o Prompt de Comando, o PowerShell, os shells do Linux, entre vários outros. Tudo isso em uma interface unificada, fazendo com que o ambiente de linha de comando possa ser alterado facilmente sem a necessidade de abrir outra janela.

Podemos verificar isso ao abrir a ferramenta e acessar o botão de expandir o menu de opções, em que são listados os diferentes shells disponíveis em seu computador. Conforme a imagem a seguir!

Captura de tela do Windows PowerShell. Mostra um terminal com fundo preto e textos em letras brancas. Também exibe um menu que lista os diferentes shells disponíveis no computador, são eles: Prompt de comando, Azure Cloud Shell, Ubuntu 22.04.2 LST. Após isso, há as opções clicáveis: Configurações, Paleta de Comandos e Sobre.

Isso permite que em uma única janela você abra diversas guias no Windows Terminal, cada uma com um shell diferente. Bem legal, né?

Além disso, o Windows Terminal tem suporte para recursos avançados, tais como:

  • Opções de personalização para adequar a aparência e comportamento do terminal às preferências pessoais do usuário;
  • Suporte nativo a Unicode e UTF-8;
  • Capacidade de configurar atalhos de teclado de acordo com suas preferências.

E o WSL? Ele é um shell?

O WSL (Windows Subsystem for Linux que traduzido significa Subsistema Windows para Linux) não é um shell por si só! Essa ferramenta, desenvolvida pela Microsoft, permite que ambientes Linux sejam executados diretamente no Windows sem ser necessário o uso de uma máquina virtual à parte.

Assim, dentro do WSL é possível usar qualquer sistema Linux, o que facilita o uso de shells Linux dentro do Windows.

Caso você tenha curiosidade em entender mais sobre o WSL, temos aqui na Alura o artigo WSL: como executar programas e comandos Linux no Windows? que vai te mostrar os principais usos dessa ferramenta.

CLIs populares

Além dos shells usados para a interação com o sistema operacional de nosso computador, que fazem uso de CLIs, também existem CLIs utilizadas para acessar diferentes ferramentas e recursos. Confira as mais populares a seguir:

  • Git: É um sistema de controle de versão usado no gerenciamento de projetos de software. Todos os comandos git podem ser executados a partir de linha de comando. É possível utilizar o git através de interfaces gráficas próprias para Git, como o GitKraken, porém, mesmo usando estas ferramentas, alguns comandos mais específicos e avançados só podem ser acessados através da CLI.

Nós temos aqui na Alura o curso Git e Github: controle e compartilhe o seu código, caso você tenha interesse em aprender mais em Git.

  • AWS CLI: É uma interface de linha de comando disponibilizada pela AWS (Amazon Web Services), que permite a interação dos usuários com os serviços de nuvem fornecidos pela empresa. Assim, é possível controlar e gerenciar os recursos e serviços da AWS diretamente pelo terminal do Windows, MacOS e Linux, ou através de scripts automatizados.

Aqui na Alura você encontra diversos conteúdos para aprender mais sobre a AWS, como a Formação começando na AWS com Lightsail, EC2, S3, VPC, RDS e DynamoDB.

  • Azure CLI: É a interface de linha de comando da empresa Microsoft, usada para que pessoas usuárias possam realizar a interação com os serviços da Azure, gerenciando e automatizando os recursos disponíveis.

Caso você queira se aprofundar em Azure, recomendamos a Formação Azure: Dê seus primeiros passos no Cloud do Microsoft Azure.

  • Google Cloud CLI: É a interface de linha de comando da empresa Google, que disponibiliza um conjunto de ferramentas para criar e gerenciar os recursos do Google Cloud.

Aqui na Alura nós temos a Formação Google Cloud Platform, caso você queira aprender mais sobre as principais funcionalidades do Google Cloud.

  • Angular CLI: É a interface de linha de comando usada para inicializar, desenvolver e manter aplicações Angular usando diretamente o shell de seu computador.

Ficou curioso para saber como funciona o Angular CLI? Deixamos como recomendação o artigo Criando aplicações Angular com Angular CLI.

  • NVM: NVM é a sigla para Node Version Manager, que traduzido significa Gerenciador de Versão do Node. Ele é a interface de linha de comando usada para gerenciar diferentes versões do Node.js em seu computador.

Temos o artigo Node.js: Descomplicando o trabalho com diferentes versões da Alura, que se aprofunda em NVM, mostrando como utilizá-lo.

Atualmente, o NVM está disponível somente para macOS e Linux, não tendo suporte para Windows. Bem, e o que você pode fazer caso queira usar o NVM no Windows? Uma solução é instalar o nvm-windows, que veremos a seguir.

  • Nvm-windows: o nvm-windows é um gerenciador de versões do Node.js para o sistema operacional Windows. Ele é bem semelhante ao NVM.

  • Docker: é uma ferramenta de virtualização de aplicações, que possibilita o empacotamento, distribuição e execução de softwares de forma isolada em diferentes ambientes, através do uso de containers. Podemos utilizar os recursos do Docker por meio de uma CLI.

Deixamos como recomendação o curso Docker: criando e gerenciando containers caso você tenha interesse em mergulhar nesse assunto.

Bem, depois de conhecer tantas opções de CLIs você deve estar se perguntando como acessá-las e usá-las?

A seguir, confira mais detalhes sobre o acesso e o uso das CLIs mais utilizadas em cada sistema operacional.

Como acessar as CLIs?

O acesso às CLIs é feito através de um terminal, aquela famosa tela preta onde são inseridos comandos em texto.

Lembra que, antigamente, os computadores possuíam apenas o monitor e o teclado, conectados a uma máquina que processava as entradas de texto? Esses dispositivos juntos eram chamados de terminal.

Atualmente, os terminais são programas que simulam esse terminal físico. Neles inserimos comandos de texto para interagir com alguma CLI através de um interpretador (os shells).

Normalmente os sistemas operacionais vêm com algum terminal, que permite o uso do shell em conjunto com a CLI. Vamos explorar a seguir como acessar o terminal padrão de cada sistema operacional.

Windows

Como mencionado anteriormente, o Prompt de Comando é o shell padrão do Windows. Para acessar o terminal que permite utilizá-lo, podemos usar o menu de pesquisa da barra de tarefas. Basta digitar “cmd”, que será aberto um menu com alguns programas, incluindo o Prompt de Comando.

Captura de tela do Windows. Está destacado com um retângulo verde o campo de pesquisa da barra de ferramentas, no canto inferior esquerdo que contém o texto “cmd”. Além disso, a imagem mostra o menu que se abre com o resultado dessa pesquisa, o programa “Prompt de Comando” que está destacado no canto superior esquerdo dentro de um retângulo verde.

MacOS

Para abrir o Terminal no macOS, podemos usar a busca no Spotlight. Para abrir o Spotlight use o atalho command+barra de espaço e digite por “Terminal”.

Captura de tela do campo de busca Spotlight do macOS.

Assim, aparecerá o programa “Terminal” para você clicar, abrir e usá-lo. Dessa forma, você conseguirá utilizar o shell do macOS.

Captura de tela do campo de busca do Spotlight com o texto “Terminal”. Logo abaixo encontra-se o ícone do programa terminal, destacado por um retângulo verde.

Linux

A maneira de encontrar o terminal em cada distribuição Linux pode variar um pouco. Mostraremos como isso é feito no Ubuntu.

Primeiramente clicamos no botão de “Iniciar” no Ubuntu. Isso abrirá uma tela com uma barra de pesquisa, onde você deve digitar “Terminal”. Após isso, clique no aplicativo “Terminal” que será mostrado nos resultados da pesquisa.

Captura de tela do sistema operacional Ubuntu. Está destacado dentro de um quadrado verde no canto inferior esquerdo o botão de iniciar, que é formado por nove quadrados pequenos e brancos que em conjunto compõem um quadrado maior. No centro superior da tela está destacado por um retângulo verde a barra de pesquisa que contém o texto “Terminal”. Logo abaixo se encontra o ícone do programa Terminal, que também está em destaque com um quadrado verde.

Uma outra forma mais prática de abrir o terminal no Ubuntu é por meio do atalho Ctrl + Alt + T.

Como usar as CLIs?

O uso das CLIs é feito por meio dos comandos de texto. Esses comandos são instruções específicas que digitamos em algum terminal para que as CLIs executem alguma tarefa. Os comandos das CLIs podem vir acompanhados de argumentos e opções.

Vamos analisar o que é cada parte de um comando, utilizando o exemplo do comando git checkout master. Nesse caso, trata-se de um comando usado para trocar a branch em um repositório Git.

Por enquanto basta ter em mente que esse texto corresponde a uma linha de comando de uma CLI, confira os detalhes na imagem:

Exibe o comando `git checkout main` com suas partes numeradas. Em que: `git` é representado pelo número 1, `checkout` e `main` isolados é representado pelo número 2, `checkout main` juntos pelo número 3 e o comando completo representado pelo número 4.

Na imagem identificamos cada trecho do comando com um número. Vamos ao que representa cada uma dessas partes:

  1. Nome do comando: O trecho identificado com um número 1 representa o nome do comando. Nesse exemplo, temos um comando git.

  2. Token ou argumento: A parte identificada com a numeração 2 corresponde a um token, também conhecido como argumento, para o comando. Cada token é representado por uma sequência de caracteres que é interpretada pelo shell como uma unidade única, como se fosse uma só palavra. Assim, as palavras checkout e master são tokens individuais do comando.

  3. Argumentos: O conjunto de vários tokens forma o que chamamos de argumentos.

  4. Linha de comando: Por fim, a união do nome do comando com os seus argumentos forma uma linha de comando.

Vamos a um outro exemplo que mostra além de argumentos, o uso de flags. Para isso usaremos o comando git commit --message “Adicionando novo recurso”. Esse comando cria um novo commit em um repositório Git com a mensagem “Adicionando novo recurso”.

Exibe o comando `git commit –message “adicionando novo recurso”` com suas partes numeradas. Em que: `git` é representado pelo número 1, `commit` e “adicionando novo recurso” representado pelo número 2, `--message` pelo número 3 e o comando completo representado pelo número 4
  1. Nome do comando: Temos novamente o nome do comando com git.

  2. Token ou argumento: Também temos os tokens commit e “Adicionando novo recurso”.

  3. Flag ou opção: Temos a flag --message. As flags, também chamadas de opção, servem para modificar o comportamento do comando executado. Elas são fornecidas como argumentos adicionais na linha de comando.

  4. Linha de comando: E por fim, o conjunto de todos esses elementos forma a linha de comando.

As flags podem ser precedidas de um ou dois hífens. Quando são usados dois hífens, como no exemplo acima, elas normalmente são chamadas de “flags longas”.

O comando do exemplo anterior também pode ser escrito da seguinte maneira: “git commit -m “Adicionando novo recurso”. O -m é uma versão abreviada da flag --message, que utiliza apenas um hífen.

Exibe o comando `git commit –m “adicionando novo recurso”` com suas partes numeradas. Em que: `git` é representado pelo número 1, `commit` e “adicionando novo recurso” representado pelo número 2, `--m` pelo número 3 e o comando completo representado pelo número 4

Histórico de comandos

Uma funcionalidade interessante que está presente na maioria das CLIs é o histórico de comandos. Isso permite que comandos digitados anteriormente sejam acessados novamente. Assim podemos revisar comandos anteriores e reutilizá-los com alterações caso seja necessário.

Quando um comando é digitado e executado por alguma CLI, esse comando é adicionado ao histórico de comandos, normalmente em ordem sequencial, seja em um arquivo ou na memória.

O funcionamento do histórico de comando pode ter variações conforme o sistema operacional, shell e CLI utilizados. Entretanto, existem algumas características que geralmente estão presentes na maior parte dos históricos de comandos. Entenda como essas características funcionam a seguir:

  • Acesso a comandos anteriores: Essa é sem dúvidas a característica mais marcante do histórico de comandos. Para acessar comandos anteriores, normalmente usamos as teclas no teclado de seta para cima para navegar por comandos mais antigos e seta para baixo para retornar para os comandos mais recentes.

  • Execução de um comando anterior: Podemos executar novamente um comando depois de encontrá-lo no histórico pressionando a tecla Enter.

  • Edição de comandos anteriores: Também é possível editar um comando anterior antes de executá-lo novamente. Para isso basta utilizar as teclas de seta para esquerda e seta para direita para navegar dentro do comando e realizar as alterações desejadas.

Prepara o bloco de notas para anotar as dicas de comandos a seguir!

Comandos em Cadeia

Outra funcionalidade importante presente em diversas CLIs é a execução de comandos em cadeia. Isso permite que vários comandos sejam executados consecutivamente, um após o outro, na mesma linha de comando.

Existem maneiras diferentes de executar comandos em sequência. Vamos explorar os dois principais:

  • Uso de ponto e vírgula (;): Os comandos podem ser separados por meio do caractere ponto e vírgula (;). Cada comando será executado independentemente do resultado do comando anterior, ou seja, mesmo que algum comando falhe, a execução continuará para os próximos comandos.

Vamos a um exemplo:

cd Projeto ; mkdir imagens ; cd imagens

Na sequência de comandos acima, o comando cd Projeto será executado primeiro, seguido pelo comando mkdir imagens e, em seguida cd imagens. É importante lembrar que se algum comando falhar, a execução continuará para os próximos comandos.

Caso você não saiba o que esses comandos significam, não se preocupe. Veremos para que serve cada um deles logo mais.

  • Uso de E comercial duplo (&&): Outra forma de separar os comandos é por meio do operador &&. Nesse caso, um comando só é executado caso o comando anterior tenha obtido sucesso.

Vamos analisar o exemplo a seguir:

cd Projeto && mkdir imagens && cd imagens

Nesse caso, o comando mkdir imagens só será executado se o comando cd Projeto tiver sido executado com sucesso. O mesmo se aplica ao comando cd imagens, que só será executado se o mkdir imagens tiver tido sucesso em sua execução. Se algum comando gerar um erro, a execução dos comandos subsequentes é interrompida.

A execução de comandos em cadeia permite a combinação e aninhamento de diferentes comandos e operadores para a criação de sequências complexas, que são bastante usadas em automações.

Outro aspecto importante a ter em mente é que cada sistema operacional pode possuir uma sintaxe própria para a execução de comandos em cadeia. Especificamente no caso do Windows, o Prompt utiliza comandos diferentes dos shells usados em sistemas UNIX. Assim, é importante sempre consultar a documentação do seu sistema operacional.

Apesar das diferenças entre as diversas CLIs, existem alguns comandos comuns entre as CLIs de mesmo propósito. Vamos a alguns exemplos.

Comandos de shell

Nas CLIs que atuam nos shells normalmente encontraremos comandos para as seguintes tarefas:

  • Comandos de navegação em diretórios:

    • cd nome-diretorio: Altera o diretório atual para o diretório informado.
    • dir no Windows ou ls no Linux e macOS: Lista todos os arquivos e pastas presentes no diretório atual.
    • pwd: Informa qual o diretório de trabalho atual.
  • Comandos de manipulação de arquivos e diretórios:

    • mkdir nome-diretorio: Cria um novo diretório com o nome informado.
    • rm nome-diretorio-ou-arquivo: Remove o arquivo ou diretório do nome informado.
  • Comandos de gerenciamento de processos:

    • ps: Lista todos os processos que estão em execução no seu computador.
    • kill id-processo: Encerra o processo do id informado.

Comandos para CLIs de gerenciamento de pacotes

Também existem comandos para CLIs que lidam com gerenciamento de pacotes:

  • apt: Gerenciador de pacotes usado para instalação e remoção de software em sistemas Ubuntu e Debian.
  • yum: Gerenciador de pacotes usado para instalação e remoção de software em sistemas CentOS e Fedora.
  • brew: Gerenciador de pacotes para instalação de software no macOS.

Comandos para CLIs de Git

Outro tipo comum de CLI é o Git, utilizado para controle de versão de projetos. Seus principais comandos de texto incluem:

  • git init: Inicializa um repositório Git dentro de um diretório.
  • git clone: Clonaum repositório Git existente.
  • git add: Adiciona arquivos e alterações ao índice do Git.
  • git commit: Cria um novo commit com as modificações feitas.
  • git push: Envia as alterações feitas em um repositório local para um repositório remoto.

O que vimos são apenas alguns exemplos dos comandos de texto mais comuns. Porém a variedade de comandos vai depender da CLI usada. Inclusive entre as CLIs apresentadas, existe uma lista muito maior de comandos à disposição.

O ideal é sempre consultar a documentação específica da CLI utilizada para sabermos quais os comandos disponíveis, quais suas opções e como utilizá-los corretamente.

Outro aspecto importante, que devemos sempre prestar atenção ao usar as CLIs é garantir que estamos digitando o comando certo, tanto em termos de escrita quanto de funcionalidade. Muita atenção nessa hora!

Existem programas e ferramentas que oferecem interação tanto por linha de comando quanto por interfaces gráficas. Por exemplo, o Github permite executar comandos de versionamento Git tanto por CLI quanto pelo programa com interface gráfica chamado Github Desktop. Outro exemplo é o Docker, usado para gerenciamento de containers. Podemos usá-lo tanto pelo terminal com comandos de texto quanto pelo programa Docker Desktop, que usa interface gráfica.

Isso nos leva a reflexão: Quais são as diferenças entre Interfaces de Linha de Comando e Interfaces Gráficas? Vamos discutir essas diferenças a seguir.

Diferenças entre CLI e GUI

Antes de explorar as principais diferenças entre as CLIs e as GUIs, vamos recapitular o que são de fato as GUIs.

GUI é a sigla para Graphical User Interface, que traduzida significa Interface Gráfica de Usuário. Ela é uma forma de interagir com um sistema através de uma interface visual, com janelas, ícones, menus, botões, etc.

Nas GUIs, os usuários realizam ações através de dispositivos de entrada como mouse, teclado e até telas sensíveis ao toque. Devido a interface visual ser mais intuitiva, com a aparência mais amigável e atraente, atualmente as GUIs são a principal forma de interação entre as pessoas usuárias e os diferentes softwares.

As CLIs e as GUIs oferecem formas distintas de interação com os sistemas computacionais. Vamos as diferenças entre a CLI e a GUI:

AspectoCLIGUI
Apresentação visualAs CLIs não possuem uma representação gráfica direta das opções disponíveis para o usuário.As GUIs fornecem uma interface gráfica com elementos visuais, possuindo janelas, menus, botões, ícones, entre outros para apresentar as opções de interação disponíveis para o usuário.
Forma de InteraçãoNas CLIs os usuários digitam comandos específicos para realizar as ações desejadas, sendo mais utilizadas por pessoas que atuam na área da tecnologia.Nas GUIs os usuários interagem com o sistema através de ações como clicar, arrastar e soltar objetos na interface. Sendo desse modo mais intuitiva e fácil de aprender a usar.
EficiênciaA execução de tarefas nas CLIs geralmente é mais rápida, pois exige apenas que o comando específico para a tarefa que deseja realizar seja digitado.Apesar de serem mais amigáveis, as tarefas podem demorar mais tempo para serem executadas nas GUIs devido ao número de cliques e a navegação necessária para realizá-las.
ComplexidadeAs CLIs permitem um maior controle e personalização do sistema, entretanto ela é mais utilizada por pessoas com mais experiência em tecnologia.Nas GUIs a experiência é mais amigável, fluída e intuitiva para o usuário.
Automatização e ScriptUm dos usos mais comuns das CLIs é para tarefas de automação e script, pois a execução de comandos em sequência facilita e torna mais eficiente a realização de tarefas complexas ou repetitivas.Nas GUIs não é comum o suporte para o uso de recursos avançados para automação e script.

Lembra que o Docker é uma ferramenta que podemos usar tanto por linha de comando quanto por interface gráfica? Na imagem a seguir podemos visualizar um mesmo container Docker sendo inicializado pela CLI e também através da interface gráfica do Docker Desktop.

O gif está dividido em duas partes. A primeira, na parte superior: mostra como iniciar o Docker do VollMed com CLI através do comando `docker compose start`, em seguida mostra como parar o Docker através do comando `docker compose stop`. Já a segunda, na parte inferior: mostra como iniciar o Docker através de uma interface gráfica, nessa interface há o contêiner “VollMed” e ao lado dele o botão de iniciar e parar que é acionado na animação.

Nesses casos, a escolha de usar a interface gráfica ou a linha de comando dependerá da sua preferência e também do seu objetivo. Já que as CLIs oferecem maior flexibilidade em relação a algumas tarefas. Vamos a seguir nos aprofundar nessa discussão a respeito do porquê utilizar uma CLI.

Por que usar as CLIs?

Em determinadas situações é preferível o uso de CLIs, pois elas oferecem uma série de recursos úteis para pessoas que trabalham com tecnologia. Sua competência para processar comandos rapidamente, faz com que elas sejam capazes de executar desde tarefas simples, como listar arquivos em um diretório, até operações avançadas, como a manipulação de dados complexos.

Com as CLIs temos simplicidade e redução de recursos, pois não há uso de uma interface gráfica complexa.

Além disso, as CLIs oferecem um processamento poderoso. Com elas conseguimos ter controle avançado sobre o sistema operacional e os programas do nosso computador. Isso se dá por meio da execução de operações personalizadas e o acesso a recursos do sistema que normalmente não estão disponíveis através das interfaces gráficas.

Vale ressaltar que as CLIs são essenciais para a realização de automação e scripting. É por meio disso que conseguimos automatizar tarefas recorrentes ou complexas, o que economiza tempo e esforço. Alguns exemplos disso são a criação de scripts para realização de backups e a execução de rotinas para manutenções periódicas.

Então, quando se trata da atuação de devs, as CLIs são muito importantes pois fornecem ferramentas e utilitários de linha de comando que facilitam diversos aspectos do desenvolvimento de software como o processo de compilação, depuração, execução de programas, entre outros.

Outra situação em que o uso das CLIs é relevante é no acesso remoto a sistemas. Um exemplo disso está na administração de servidores, onde conseguimos nos conectar via SSH e usar comandos para realizar as tarefas desejadas.

Esses são alguns dos principais motivos para se utilizar as CLIs, confira a seguir um resumo das vantagens e desvantagens desta ferramenta poderosa!

Quais as suas vantagens?

Até aqui vimos que as CLIs são uma ferramenta poderosa. Entre suas principais vantagens podemos listar:

  • Eficiência e velocidade na execução de comandos.

  • Possibilidade de automação e criação de scripts.

  • Uso de recursos mínimos quando comparadas com as GUIs.

  • Registro e replicação de ações, por meio do histórico de comandos.

Quais as suas desvantagens?

Apesar de suas vantagens, as CLIs também apresentam algumas desvantagens, entre as quais podemos citar:

  • Falta de interface gráfica intuitiva, o que torna o seu uso mais difícil para usuários inexperientes.

  • Curva de aprendizado íngreme, que exige o aprendizado da sintaxe e dos comandos específicos da CLI utilizada.

  • Menor feedback visual, pois nas CLIs os feedbacks são dados em texto, o que requer uma leitura e análise mais cuidadosa dos resultados apresentados.

  • Restrições de usabilidade, já que algumas tarefas são mais fáceis de serem executadas em GUIs, especialmente as que podem ser feitas com interações gráficas de arrastar e soltar, por exemplo.

Agora, você pode decidir quando usar ou não as CLIs para te auxiliar!

Como aprender melhor? Com Diogo Pires | #HipstersPontoTube

Aqui na Alura temos apostilas a disposição para você se aprofundar nos mais diversos temas. Baixe as apostilas da coleção da Alura em: Apostilas da Alura - Conteúdo livre para o seu aprendizado.

Conclusão

Até aqui você aprendeu o que são as interfaces de linha de comando, como elas surgiram, quais seus usos mais comuns, como utilizá-las e quais as suas vantagens e desvantagens.

Além disso, entendeu quais são as diferenças entre shell, CLIs e terminal; quais os comandos mais importantes e recursos disponíveis nas principais CLIs. Por fim, identificou as diferenças entre CLIs e GUIs.

Sem dúvida foi uma jornada e tanto ao universo das CLIs!

Parabéns por chegar até aqui, agora você pode aplicar todo esse conhecimento e aprimorar ainda mais o seu trabalho como dev, aplicando essa ferramenta poderosa.

Bons estudos e até mais!

Gabrielle Ribeiro Gomes
Gabrielle Ribeiro Gomes

Gabrielle é estudante de Engenharia de Software na Universidade de Brasília - UnB. Faz parte do Scuba Team da Alura atuando principalmente com Python. É apaixonada por programação, robótica, machine learning e gatos.

Veja outros artigos sobre DevOps