O que é um "Comando de Terminal"?
Um comando de terminal é um tipo de programa executado digitando uma palavra ou frase em uma janela de terminal, e.g. mkdir
é um comando que "cria um diretório" (em Inglês: make a directory). Mais especificamente, um comando de terminal é um código de texto interpretado por um programa interpretador chamado de shell (tal como o bash em sistemas GNU/Linux ou o prompt de comando no Windows), após ser digitado em uma interface chamada console ou emulador de terminal, que geralmente aparece na forma de uma janela de um aplicativo como Konsole, Alacritty, ou o Terminal do Windows.
Por exemplo, no Terminal do Windows, você pode digitar comandos no PowerShell ou no Prompt de Comando. Esses são dois interpretadores diferentes, logo interpretam e executam o texto digitado de maneira diferente, porém o uso mais básico é geralmente o mesmo independentemente do shell usado: no terminal você terá uma linha de comando, onde estará escrito o "diretório atual" (current directory), e.g. C:\users\eu
. Se você digitar mkdir fotos
e apertar a tecla Enter, o comando mkdir
será executado com o parâmetro fotos
. Esse é o trabalho do shell. O que ocorre depois depende do comando de terminal executado. No caso do mkdir
, esse comando criará um diretório (uma pasta) dentro do diretório atual com o nome do primeiro parâmetro passado para ele. Ou seja, o diretório atual sendo C:\users\eu
, mkdir
criará uma pasta com o caminho de arquivo C:\users\eu\fotos
.
Devido a tecla Enter iniciar a execução do comando digitado, em geral comandos não têm múltiplas linhas, é uma linha só. Disso vem o conceito de linha de comando. Tudo que está digita na linha é executado de uma vez só ao pressionar Enter. Chamados essa interface de "interface de linha de comando" (command-line interface, ou CLI). Geralmente há como executar um comandos que possui múltiplas linhas de texto, mas o meio como fazer isso varia de shell para shell.
Quais comandos de terminal estão disponíveis também varia de sistema para sistema. Em sistemas baseados em Unix (como Linux e BSD), temos o comando ls
que lista os arquivos e pastas dentro de um diretório. No Windows (i.e. DOS), o comando ls
não existe, e o comando dir
realiza essa tarefa. Em alguns casos, existe um comando com o mesmo nome, porém seu funcionamento é diferente, e.g. no Linux, mkdir /a/b/c
falhará se /a
e /a/b
não existirem. É necessário o comando mkdir -p /a/b/c/
nesse caso. Isso é chamado de criação de diretórios recursivos, pois mkdir
cria diretórios não existentes. No Windows, não é necessário -p
, e C:\a\b\c
criará as pasta C:\a
e C:\a\b
se elas não existirem. Também há diferenças entre Linux e BSD em alguns comandos, como ln
aceitando parâmetros diferentes entre sistemas ao criar symlinks.
Parâmetros (também chamados de argumentos) da linha de comando são separadas por espaços. É possível digitar um parâmetro de múltiplas palavras usando aspas duplas ("
), e.g. mkdir "minhas fotos"
.
O primeiro parâmetro da linha de comando é o nome do comando de terminal. É possível usar o caminho de arquivo completo do executável nesse caso. Por exemplo, se você digitar C:\Windows\explorer.exe
e apertar Enter, você executará o explorador de arquivos do Windows, o que abrirá uma janela. Usamos aspas se houver espaços, e.g. "C:\Program Files\Inkscape\bin\inkscape.exe"
abrirá o Inkscape. Já que "Program Files" (arquivos de programas) são múltiplas palavras, precisamos das aspas.
Em geral, programas capazes de abrir arquivos interpretam primeiro parâmetro passado para eles como o caminho de arquivo de um arquivo a ser aberto. Isto é, se digitarmos:
"C:\Program Files\Inkscape\bin\inkscape.exe" C:\desenho.svg
O Inkscape será executado, e automaticamente abrirá C:\desenho.svg
. Toda vez que você clica duas vezes em um arquivo para o abrir em um gerenciador de arquivos, é simplesmente isso que está ocorrendo e nada mais. O gerenciador encontra o programa associado, e passa para ele o caminho do arquivo clicado como segundo parâmetro.
O shell usa uma variável de ambiente chamada de PATH
("caminho") na resolução do nome do comando. Isso é, se C:\apps\
constar no PATH
, e existir um arquivo C:\apps\tocar-musica.exe
, é possível digitar tocar-musica
no terminal e o Windows executará o tocar-musica.exe
que o shell encontrara em uma das pastas no PATH
. No Windows, alguns programas que você instalar automaticamente adicionaram suas pastas ao PATH
durante a instalação, o que permite que eles sejam executados dessa forma. Isso ocorre principalmente na instalação de programas para o desenvolvimento de software. Por exemplo, npm
, git
, python
, zig
, gcc
, etc. Na maioria dos casos haveria uma pasta bin
(de binário), onde os arquivos executáveis binários de algo instalado pode ser encontrado. Se adicionássemos a pasta bin
do Inkscape ao PATH
do Windows, poderíamos digitar inkscape C:\desenho.svg
, por exemplo.
No Linux, qualquer arquivo em ~/.local/bin
pode ser encontrado pelo shell (~
é o diretório do usuário, e.g. /home/eu/fotos
e ~/fotos
seria a mesma coisa). Porém no Linux não é usado a extensão de arquivo .exe
. Se você escrever um script do bash, que geralmente tem a extensão .sh
, o shell não executará esse script sem você digitar a extensão, e.g. você precisaria digitar tocar-musica.sh
para executar ~/.local/bin/tocar-musica.sh
. Uma solução para isso é o uso do "shebang" (#!
). Se um arquivo de texto começar #!/bin/sh
, e estiver marcado como executável (com o comando chmod +x tocar-musica
, no caso), o shell irá executar o arquivo usando o programa /bin/sh
. Isto é, se tocar-musica
for um script em Python que começa com #!/usr/bin/python
, e você digitar tocar-musica
, o shell irá executar o comando de terminal /usr/bin/python /home/eu/.local/bin/tocar-musica
, que executará o interpretador Python e mandará ele interpretar o arquivo tocar-musica
.
Deixe um comentário