Comandos Básicos Shell - Introdução

A linha de comando será sua amiga!

Vamos falar agora de alguns comandos shell básico que você deveria saber para começar a programar, esses comandos te ajudarão a ser mais produtivo e fazer tarefas que antes eram feitas com o mouse.

Para começar crie um diretório workspace no seu diretório home supondo que você está no Linux, opa!!! tire essa mão do mouse!

Bem, eu suponho que você esteja no Linux ou em qualquer outro *nix da vida. Esse Magic Resource espera que você já tenha instalado alguma distribuição de Linux na sua máquina, esteja em um Mac ou outro SO de sua preferência, mas com Windows, infelizmente, não vai rolar :(!

Isso porque esses comandos de shell não funcionam no modo texto do Windows, com o Power Shell esse modo no Windows ficou muito mais poderoso, mas ainda deve muito para qualquer shell do sistemas *nix.

Caso ainda não tenha um computador com um *nix, no final desse tutorial deixaremos dois tutoriais, um para instalar o Ubuntu como dual boot e outro para você virtualizar o Ubuntu usando VirtualBox (virtualizar pode não ser uma boa se você não tem máquina suficiente para isso).

  • Se ainda não está seguro de instalar Linux na sua máquina (caso ainda não tenha um *nix na sua maquina) você pode instalar o Git for windows e terá um terminal para fazer esse tutorial, mas lembre-se que isso deve ser temporário.

Mas, vamos ao que interessa!

Primeiro passo, vamos usar um comando para descobrir onde estamos no shell:

Obtendo Ajuda e informações

Antes de começar, se sentir-se perdido, há alguns comandos que podem ajudar:

man, info, help, vejam:

$ man pwd # aperte q depois que ler o conteúdo
$ info pwd # aperte q depois que ler o conteúdo
$ help pwd 

São informações valiosas que ajudam muito quando precisamos, nem todos os comandos tem manual (man), página de informações (info) e um help bem detalhado, mas os que vamos ver aqui, na maioria, tem essas informações. \o/

Arquivos e diretórios

pwd - print working directory

pwd mostra o diretório corrente.

Ex: bash $ pwd /home/nome_do_seu_usuario

Onde nomedoseu_usuario é o usuario que você está logado, nos sistemas *nix sempre é cria uma pasta com o nome do usuário dentro do diretório /home.

Uma observação válida para esse Magic Resource e todos outros que usarem linha de comando: Toda vez que você ver $, quer dizer que estamos no terminal pronto para digitar um comando, mas você deve estar vendo algo como isso:

Terminal

Isso é o Prompt, nesse caso está configurado para mostrar seu usuário, nome da sua máquina, pasta atual e $, falarei sobre mais prompt em outro momento.

cd - change directory

Se você estiver em outro diretório, pode dar o comando cd para ir para o seu diretório HOME

$ cd

Toda vez que você ver $ estarei falando de seu Prompt do terminal, explicarei isso mais para frente, fique tranquilo.

mkdir - make directory

Bem, agora vamos criar aquele diretório workspace que eu falei no começo, com o comando mkdir.

$ mkdir workspace

Lembre-se de estar no seu diretório HOME, hein!

Esse comando mkdir, cria um pasta no seu diretório corrente ou se preferir, pode entrar com o caminho todo, por exemplo:

$ mkdir /home/nome_do_seu_usuario/workspace

O . (ponto) e o .. (ponto ponto)

Veja que mesmo criando esse diretório, você continua no seu diretório home, para ir para o diretório recém criado faça:

$ pwd
/home/nome_do_seu_usuario/
$ cd workspace
$ pwd
/home/nome_do_seu_usuario/workspace

e para voltar para o diretório anterior:

$ cd ..
$ pwd
/home/nome_do_seu_usuario

Esse .. significa diretório acima, nesse caso /home/nome_do_seu_usuario, outro exemplo seria:

$ pwd
/var/www
$ cd ..
$ pwd
/var

Vamos a outro comando que vai no ajudar a entender outras opções do cd, no terminal digite ls:

$ ls

Estando no nosso diretório recém criado, nada deve aparecer, mas se a gente entrar com esse comando:

$ ls -a
. ..

Apareceu duas saídas o . e o .. esse último a gente já sabe o que siginifica, diretório acima, né! Mas e o .?

O . é o diretório corrente, quando você digita cd . nada acontece, porque você desta dizendo para o terminal mudar para o diretório corrente, ou seja, onde ele já está!

ls - List directory

O ls que vimos anteriormente nos mostra os arquivos que estõa na pasta que desejamos lista, sem nenhum argumento ele mostra o diretório corrente, mas você também pode ver o conteúdo de outros diretório, por exemplo:

$ ls /home
nome_do_seu_usuario

Você pode listar com os arquivos ocultos, aqueles que começam com . (guarde bem isso!), nos sistemas *nix, arquivos com ponto não são exibidos por padrão, no caso do ls basta usar a opção -a:

$ ls -l /home
. .. nome_do_seu_usuario

Você também pode exibir os arquivos em lista com a opção -l e pode combina-la com a opção -a, veja:

$ ls -la /home 
drwxr-xr-x  3 root    root    4096 Apr 30  2014 .
drwxr-xr-x 24 root    root    4096 Feb  7 22:12 ..
drwxr-xr-x 15 nome    nome    4096 Apr  4 15:02 nome

Aqui você pode ver se a entrada é um diretório ou um arquivo com o primeiro caracter mostrado na listagem (d ou -), as permissões (falaremos disso depois), o nome do grupo e do usuário dono daquele arquivo ou diretório, o tamanho dele em bytes e da data de ultima modificação.

touch

O comandon touch tem um funcionalidade bem avançada para discutirmos no momento, que é alterar a data de acesso de um determinado arquivo ou diretório, mas normalmente usando ele para criar um arquivo sem nenhum conteúdo, como no exemplo a seguir:

$ touch um_arquivo.txt

Esse comando cria um arquivo chamado um_arquivo.txt no diretório corrente.

~ - Seu diretório home

Cansei de escrever /home/nome_do_seu_usuario e o bash, me ajuda nisso, a partir de agora eu vou digitar somente ~, veja:

$ cd ~
$ pwd 
/home/nome_do_seu_usuario
ls ~
workspace

O diretório ~ é um apelido para seu diretório home, toda vez que quiser se referir ao seu diretório home, basta usar o apelido ~.

cp - copy

O comando cp é usado para copiarmos arquivos, seu uso é bem simples:

$ cp um_arquivo.txt outro_arquivo.txt

Podemos também copiar o arquivo para outro diretório, como por exemplo para diretório /tmp (temporary directory):

$ cp um_arquivo.txt /tmp/

Ou para o diretório acima:

$ cp um_arquivo.txt ../

Como estamos no diretório ~/workspace, esse comando copiará o arquivo para o diretório ~.

mv - move

O comando mv é usado para movermos arquivos e diretórios, veja:

$ mv outro_arquivo.txt /tmp/
$ ls /tmp/*.txt
outro_arquivo.txt um_arquivo.txt

Gostou? Além de mostrar como mover um arquivo, te mostrei como listar arquivos com uma extensão, na verdade com um sufixo específico!

Outros exemplos:

$ mv um_arquivo.txt novo_arquivo.txt
$ ls
novo_arquivo.txt

O mv, dependendo do uso, serve para renomear arquivos também, nesse caso eu movi o arquivo um_arquivo.txt para o arquivo novo_arquivo.txt, legal, não?

TL;DR

Esse TL;DR poderia estar no inicio, mas vamos deixar para o final, para quando você precisar de um referência rápida do que aprendermos aqui.

cd diretorio                         # muda para o diretorio
cd                                   # cd sem paramêtros muda para o diretório HOME
cd ~                                 # muda para o diretório home do usuário
cd -                                 # volta para o diretório anterior.
cd ..                                # vai para o diretório acima
pwd                                  # exibe o diretório atual
ls                                   # lista o conteúdo do diretorio
ls -a                                # mostra os todos os arquivos e inclusive os que começam com . (ocultos)
ls -lah                              # mostra como o exemplo anterior, em lista e com os tamanho de forma amigável (ao inves de bytes mostra MB, GB, etc.)
mkdir um_diretorio                   # cria um_diretorio dentro do diretório corrente
mkdir -p /pasta/subpasta/subsubpasta # cria o diretorio com toda a hierarquia (cria /pasta/subpasta/subsubpasta, caso ainda não exista)
touch um_arquivo                     # cria um_arquivo caso ele ainda não exista ou muda a data de alteração do arquivo para data atual.
cp um_diretorio destino              # copia um_diretorio (ou arquivo) para o destino
cp -r um_diretorio destino           # copia recursivamente os arquivos dentro dos subdiretorios de um_diretorio
mv um_diretorio destino              # move um_diretorio para destino
mv arquivo1 arquivo222               # renomeia/move arquivo1 para arquivo222

Acho que chega por aqui, vamos fazer alguns práticar um pouco para passar para o próximo Magic Resource, Mais um pouco de Shell

Alguns links que podem ajudar

Até mais!

Faça login para comentar.

Entrar

9 Comentários

Adalberto Caldeira Brant Filho

Adalberto Caldeira Brant Filho há 3 meses

muito legal, gostei.


Leonardo Fernandes

Leonardo Fernandes há 11 meses

Linux é vida :-)


matheusam

matheusam há 12 meses

Apenas uma observação, o link do git para Windows esta com o tld .oi ao invés de .io.


Davi Carvalho

Davi Carvalho há quase 2 anos

Show de bola, faz algum tempo que uso *nix, mas ainda não tinha intendido o ..


ayslanportela

ayslanportela há quase 4 anos

Muito bom este post, adeus mouse haha !!!


raphael-sdm

raphael-sdm há quase 4 anos

Na primeira linha abaixo de ambos, há um typo "estõa" no primeiro e "é bom simples" ("é bem simples", imagino) no segundo. Just pointing out :)


Stefanie Melo

Stefanie Melo há quase 4 anos

Muito bom!! =D


Alan Rafael R. Batista

Alan Rafael R. Batista há quase 4 anos

Concordamos Wanderson e por isso estamos reformulando todos os Code Worlds. Em breve teremos muitas novidades! Obrigado pelo feedback.


Wanderson Elias Coelho dos Santos

Wanderson Elias Coelho dos Santos há quase 4 anos

muitos iniciantes teriam logo abandonado