Desvendando a Interface De Linha De Comando

Recentemente, publiquei um vídeo no canal Python Café, que explica como utilizar uma interface por linha de comandos. O vídeo foi gravado pensando em pessoas que tiveram nenhuma ou muito pouca interação com uma interface deste tipo e, portanto, procurei não me aprofundar muito nos detalhes para que esta primeira experiência pudesse ser bem assimilada e o vídeo não ficasse muito longo. Há muitos nomes, termos e comandos que podem ser completamente novos. No vídeo, ensinei como navegar pelas pastas do seu computador, agora irei te mostrar como executar mais algumas tarefas básicas que você está acostumado a fazer usando a interface gráfica — clicando em ícones e opções. Quando você estiver acostumado ou acostumada com esses comandos, tenho certeza de que terá atingido um grau de independência suficiente para descobrir novos comandos para tarefas mais sofisticadas.

Vou deixar o vídeo aqui para caso você queira revisar alguma coisa. Ao final deste artigo, você encontrará uma tabela com uma síntese de todos os comandos apresentados no vídeo e no artigo para que você possa consultar quando tiver dúvida.

Vamos começar abrindo uma janela do terminal de comando – vou me referir assim àquela janelinha onde a gente escreve! Lembrando, se você usa o Windows 7, 8 ou 10, procure por powershell na barra de busca do seu sistema. Para sistemas Linux ou Mac OS, você deve procurar por terminal.

Observação: Se você usa Windows, deve ter percebido que seus endereços possuem barras inclinadas para a esquerda (contrárias às minhas). Quando for escrever endereços, você deve seguir o padrão do seu sistema!

VAMOS CRIAR UMA NOVA PASTA!

Com o comando cd, navegue até um diretório onde você deseje criar uma nova pasta. Lembrando:

cd endereço_desejado

Para criar uma nova pasta, usaremos o comando mkdir – abreviação para make directory (crie um diretório). Assim como o comando cd, o comando mkdir precisa de um argumento para funcionar. Argumento é algo que precisamos informar para um comando para que ele execute sua função corretamente. No caso do cd, o argumento necessário é o endereço do diretório para onde queremos ir. Já o mkdir precisa saber o nome da pasta a ser criada. Portanto, se quisermos criar uma pasta chamada “python_café”, digitaremos:

mkdir python_café

Voilà, temos uma nova pasta agora. Você pode verificar isso usando o comando ls ou abrindo esta pasta pela interface gráfica (só acredito vendo!), como preferir.

Um detalhe sobre o comando cd que não foi explicado no vídeo:

Quando você está escrevendo um nome e digita um espaço na interface de linha de comando, o computador interpretará que você deseja escrever um outro argumento para o comando. Desta forma, quando o nome de uma pasta ou arquivo contém espaços, você precisa indicar a existência dos espaços de uma forma bem específica para o seu sistema. Uma maneira de indicar isso é escrever o nome da pasta ou do arquivo entre aspas, por exemplo:

cd "python café"

No caso de endereço absoluto:

cd /Users/hallpaz/"python café"

Eu acho isso meio chato e por isso me acostumei a substituir todos os espaços por _ (underline), o que é uma prática comum. Eu também evito utilizar acentos nos nomes de arquivos e pastas, embora atualmente seja mais difícil ter problemas com isso.

O comando mkdir é mais flexível do que eu mostrei, pois o argumento que ele precisa é, na verdade, o endereço da nova pasta a ser criada e não apenas o seu nome. Se você passar só o nome da pasta, estará especificando o seu endereço relativo e, portanto, ela será criada dentro do seu diretório de trabalho (pasta atual). Caso você deseje criar uma nova pasta em qualquer local do seu computador e a partir de qualquer diretório, basta passar o seu endereço absoluto. Por exemplo:

mkdir /Users/hallpaz/Workspace/artigos
Terminal de comando mostrando o resultado do mkdir
Figura 1: Criação de pastas com mkdir

Maneiro, né?

MOVENDO E RENOMEANDO ARQUIVOS

O comando mv — abreviação para move — serve para mover um arquivo de local. Este comando precisa de 2 argumentos: o endereço atual do arquivo e o endereço desejado para o arquivo. Veja o exemplo:

mv "Python Café Cover 2.key" Workspace/"Python Café Cover 2.key"

Após a execução do comando acima, o arquivo “Python Café Cover 2.key” foi movido para a pasta Workspace. Repare que a extensão do arquivo - as letras que vêm após o “.” (ponto) - faz parte do seu nome e, portanto, do seu endereço. Preste atenção para preservar a extensão do arquivo ao movê-lo.

Um fato interessante sobre este comando é que ele também é utilizado para renomear arquivos e pastas. Para isso, basta trocarmos apenas a última parte (o nome do arquivo/pasta) do endereço de destino. Veja:

mv /Users/hallpaz/Workspace/"Python Café Cover 2.key" Workspace/python_cafe_cover.key

Tanto o endereço fonte (arquivo ou pasta a ser renomeado), quanto o endereço de destino podem ser especificados de forma absoluta ou relativa. Você pode, inclusive, mudar um arquivo de local e renomeá-lo ao mesmo tempo:

mv Workspace/python_cafe_cover.key pycafe_cover.key
Terminal de comando mostrando o resultado do mv
Figura 2: Movendo e renomeando arquivos

Copiando arquivos

Agora, apresentarei o comando cp — abreviação para copy. Com o cp, podemos copiar um arquivo ou uma pasta e todo seu conteúdo. Este comando precisa que você passe dois argumentos: o endereço da coisa a ser copiada e o endereço para onde você quer copiar a coisa. Ou seja, ao contrário da interface gráfica, que permite que você simplesmente copie um arquivo, gerando um novo arquivo com o nome “cópia do arquivo tal”; a interface por linha de comandos pede o novo nome da cópia como argumento na hora da criaçao. Observe:

cp pycafe_cover copia_cover

Copiamos o arquivo python_cafe_cover.key para o arquivo copia_cover.key.

Terminal de comando mostrando o resultado da cópia
Figura 3: Copiando arquivos

Diversos comandos aceitam, além dos argumentos, opções que modificam o seu comportamento. Essas opções são indicadas por um traço, um hífen, antes de uma letra (as vezes uma sequência de letras) que representa a alteração desejada.

Se tentarmos copiar uma pasta da mesma forma que fizemos com o arquivo, obteríamos a seguinte resposta:

Terminal de comando mostrando erro ao tentar copiar pasta
Figura 3: Erro ao tentar copiar pasta

Isso ocorre, porque é necessário informar que desejamos copiar a pasta e todo o seu conteúdo também; caso contrário, ela não será copiada. Isso pode ser indicado pela opção -r da seguinte forma:

cp –r master_thesis copia_master_thesis

Observe que entre o comando e o seu primeiro argumento adicionamos uma opção -r. O traço indica que é uma opção, algo que modificará o comportamento do comando, o r significa recursivamente (recursively). Se você não sabe o que é recursão ou tem pouca experiência com isso em computação, não se preocupe, isto será abordado em vídeo e texto no momento oportuno; por enquanto, entenda que essa opção pede para que o comando seja executado na pasta (argumento) e em tudo o que estiver no interior dela (se houver pastas lá dentro, será executado no interior destas pastas também e assim repetidamente). Se você sabe o que é recursão, sacou o que isso significa neste contexto né?

Terminal de comando mostrando a forma correta de se copiar uma pasta
Figura 3: Forma correta de copiar pastas

EXCLUINDO ARQUIVOS

E se quisermos excluir um arquivo? Para isso, existe o comando rm — abreviação para remove. Para excluir o arquivo copia_cover.key basta digitarmos:

rm copia_cover.key

Pronto, apenas isso! Um detalhe importante para se ter em mente é que os arquivos excluídos desta maneira não vão para a lixeira, eles são excluídos definitivamente, então cuidado ao utilizá-lo. Da mesma forma que o comando mkdir, o argumento para o rm é o endereço do arquivo a ser excluído; assim, podemos excluir qualquer arquivo a partir de qualquer diretório — mas normalmente é mais conveniente ir até o diretório onde o arquivo se encontra, principalmente pelo fato de que a remoção é uma operação definitiva, certifique-se!.

Terminal de comando mostrando o resultado do comando rm
Figura 5: Excluindo arquivo e pasta

Para excluir uma pasta, devemos usar a opção –rf. Desta forma, pedimos que seja excluída a pasta e todos os arquivos e pastas que estejam em seu interior sem que sejamos questionados sobre a exclusão de cada arquivo individualmente. Isso pode parecer bem estranho em um primeiro momento, pois o comportamento habitual com a interface gráfica é exatamente este: você pede para deletar uma pasta e tudo o que estiver dentro dela vai embora. Uma interface por linha de comandos geralmente precisa que as coisas sejam mais explícitas, interagir com ela é algo bem mais próximo da atividade de programar, de dar instruções precisas para o seu computador, sem margem para ambiguidade.

Ufa! Muitos comandos, muitas informações… deixo aqui uma tabela com um resumo de todos os comandos que foram apresentados no vídeo e no artigo. Esta tabela não é exaustiva, isto é, há muitos outros comandos que não foram ensinados e mesmo os comandos apresentados podem ter várias opções e argumentos não explicados. Meu objetivo neste momento é cobrir as atividades mais usuais e de uma maneira descomplicada. Fique à vontade para deixar seus comentários e dúvidas!



Comando O que faz ?
Argumento 1
Argumento 2
Opção
pwd Imprime o diretório de trabalho
- - -
ls lista arquivos e pastas no diretório de trabalho
ou endereço escrito como argumento
[opcional] endereço do diretório
cujo conteúdo será listado.
- -
cd Muda o diretório de trabalho
Diretório de destino
- -
mkdir Cria um novo diretório
Endereço do diretório a ser criado
-
-
mv
Move ou renomeia um arquivo ou pasta
Endereço do arquivo/pasta a ser movido/renomeado
Endereço de destino
-
cp
Copia um arquivo ou pasta
Endereço do arquivo/pasta a ser copiado
Endereço de destino
-r (recursivamente - usada para pastas)
rm Exclui um arquivo ou pasta
Endereço do arquivo/pasta a ser excluído
-
-rf (recursivamente - usada para pastas)

Author

Hallison Paz

Sonhador | Engenheiro de computação - pretende explorar outros corpos celestes