Atualizado pela última vez em setembro de 2013.
A linha de comando é uma forma de interagir com o computador, em que a comunicação é toda feita por texto. Essa era a forma como se interagia com os computadores antes da popularização da interface gráfica, que faz uso de janelas, botões, menus, etc.
Apesar de antiga, a interface de linha de comando ainda é importante pois é mais flexível que a interface gráfica. Ela proporciona uma forma de comunicação padronizada entre os vários programas do computador, permitindo a interação entre programas que não foram especificamente projetados para interagir entre si.
Nos cursos de programação a interface de linha de comando é interessante por proporcionar uma forma padronizada de requisitar a compilação e execução de programas, permitindo que cada aluno use o seu ambiente de desenvolvimento preferido, ao mesmo tempo que o professor consegue escrever no quadro comandos que podem ser usados por todos. Isso também evita a necessidade de se ensinar a interface de um ambiente de desenvolvimento, que por vezes é mais complicada que uma interface de linha de comando.
Além disso, os alunos geralmente aprendem a programar criando programas sem interface gráfica. Isto permite concentrar na solução do problema computacional sem gastar tempo com a interface. Programas sem interface gráfica são mais apropriados para execução numa interface de texto e portanto adequados para o uso da interface de linha de comando.
O interpretador de linha de comando é um programa que fica lendo comandos de algum fluxo de dados. A cada comando lido, ele manda o computador executar o comando.
Os comandos são descritos conforme alguma sintaxe específica, porém a sintaxe não varia muito entre os interpretadores e será descrita aqui de uma forma genérica.
Existem vários interpretadores de linha de comando como o Bash, Tcsh, Ksh (para sistemas da família Unix) e o interpretador do Windows, que não tem nome e é geralmente referenciado pelo seu nome de arquivo: cmd.exe.
Eles são frequentemente chamados de shell, por motivos históricos, como se fossem todos iguais, apesar de serem apenas parecidos.
Para saber mais:
Um interpretador de linha comando é um programa feito para ser executado numa interface de texto. Como o seu computador provavelmente usa uma interface gráfica, o interpretador precisa executar sob os cuidados de um programa, conhecido genericamente como "emulador de terminal" ou simplesmente "terminal". Alguns exemplos de emuladores de terminal são:
Assim, para ter acesso ao interpretador de linha de comando, é preciso executar um emulador de terminal que por sua vez irá executar um shell. O shell escreve um sinal de pronto (ou prompt) para avisar que está pronto para receber um comando e fica esperando aparecer um comando na entrada de dados.
O sinal de pronto é configurável e costuma ter elementos que ajudem o usuário a digitar comandos. Os elementos típicos de um sinal de pronto no Linux são:
Atalho para o emulador de terminal, no Ubuntu.
Atalho para o diálogo executar do Windows XP
Chamando o interpretador de linha de comando do Windows XP via diálogo executar.
Um comando é uma sequência de caracteres que termina com um ENTER. Além do ENTER, existem vários outros caracteres com significado especial, dentre eles o espaço é de grande importância. O espaço é usado para indicar separação das partes de um comando. A primeira parte é considerada um nome de um comando do shell ou o nome de arquivo executável. As outras partes são os argumentos (ou parâmetros reais) que são passados para o comando ou programa a executar.
usuario@maquina$ ls -l ~
No exemplo acima vemos uma linha de comando, que tem o sinal de pronto (usuario@maquina$)e o comando propriamente dito (ls -l ~). A primeira parte do comando é ls. As outras partes são -l e ~. Os programa ls é um programa feito para interface de linha de comando que serve para listar nomes de arquivos, permitindo que uma pessoa tenha informações sobre quais são alguns do arquivos num sistema de arquivos e também informações extra sobre esses arquivos. Na interface gráfica, geralmente é o gerenciador de arquivos que proporciona esta funcionalidade.
O programa ls ao encontrar o argumento -l fica sabendo que o usuário deseja informações detalhadas (tamanho, data de modificação, etc.) sobre os arquivos e não apenas os nomes deles. Ao encontrar o argumento ~ o programa fica sabendo que o usuário deseja listar o conteúdo do diretório home.
Num programa com interface gráfica, você fica clicando em elementos gráficos ou escrevendo em regiões específicas da interface para dizer o que você deseja que o programa faça. Num programa com interface de linha de comando, você passa argumentos para o programa, na linha de comando que o ativa.
Cada programa trata os argumentos recebidos da forma que foi projetado para tratar, porém existem padrões que são recomendados aos desenvolvedores. Conhecer os padrões ajuda a entender rapidamente o uso de programas novos.
Algumas das principais convenções são:
Um comando importante dos interpretadores de linha de comando é o cd (mnemônico para change directory). O comando cd recebe como parâmetro o nome do diretório que você quer que passe a ser o diretório corrente. No Linux, se você omitir o argumento, o diretório home passa a ser o diretório corrente.
Para saber como funcionam os vários programas e comandos disponíveis para o interpretador de linha de comando, no Linux, use o programa man (de manual). O man recebe como argumento o nome do programa ou programa a respeito do qual você deseja informações. Por exemplo, man ls mostra a documentação do programa ls.
Para saber mais:
Os nomes de arquivo que aparecem numa linha de comando (incluindo o nome do programa a ser executado) podem ser escritos por completo ou de forma resumida. Quando escritos de forma resumida o interpretador de linha de comando vai tentar completar o nome assim:
Pode ser trabalhoso ficar escrevendo vários nomes de arquivos num comando, por isso o interpretador de linha de comando oferece vários recursos para auxiliar essa tarefa. Alguns dos recursos que você deve conhecer são:
Esta página é mantida por Bruno Schneider