Material para estudantes sobre linha de comando

A linha de comando é uma forma de controlar um computador sem uma GUI. Nesta unidade, vamos aprender os comandos básicos para interagir com o computador.

Pontos-chave

  • Os estudantes vão se movimentar pelo computador com comandos.
  • Os estudantes vão criar, mover, copiar e excluir arquivos e pastas.

O que é a linha de comando?

A maioria dos usuários usa uma interface gráfica do usuário (GUI) para interagir com o computador. As GUIs geralmente usam um mouse ou toque para manipular janelas com ícones, botões, barras de rolagem etc.

A linha de comando é uma visualização alternativa do computador. Às vezes chamada de "shell", "terminal", "bash" ou "interface de texto", a linha de comando é:

  • Uma forma de interagir com um programa de computador em que o usuário digita comandos. Por exemplo:
open README.txt
  • Uma maneira de navegar e operar o computador sem um mouse.
  • Uma maneira não gráfica de criar, ler, atualizar, operar e excluir arquivos e diretórios. Por exemplo:
mv README.txt readme.txt

A GUI e a linha de comando estão analisando a mesma coisa. São maneiras diferentes de interagir com o computador.

Quando usamos a linha de comando?

As interfaces de linha de comando geralmente são preferidas pelos desenvolvedores:

  • Elas oferecem uma maneira mais concisa de controlar um programa ou sistema operacional. Por quê? Como tudo acontece na mesma janela, e com a prática, é menos trabalhoso do que encontrar e manipular coisas com um mouse.
  • Elas expõem facilmente opções para controlar um comando. Por quê? Os menus em GUIs oferecem um número muito pequeno de opções. Na linha de comando, há centenas de comandos, e alguns caracteres adicionados a um comando podem fazer com que ele execute muitas ações diferentes. Por exemplo:
  • ls Arquivos de lista básica
  • ls -a Listar todos os arquivos, incluindo os normalmente ocultos
  • ls -l Lista longa, mostrando informações sobre cada arquivo
  • ls -R Recursivo, lista o conteúdo dos diretórios
  • ls -la Lista longa de todos os arquivos
  • Eles facilitam a ação em vários arquivos de uma só vez de maneiras complexas.
for i in *.png; do pngtogif $i `echo $i | sed s/png/gif/`; done
  • Eles oferecem uma maneira de programar o sistema operacional (programas de shell). Por exemplo, o exemplo acima é um programa de shell muito simples projetado para modificar imagens com nomes de arquivos que terminam em .png.

Linha de comando em ação

Partes de um comando da linha de comando

Todos os comandos têm três partes:

  • O comando (ou utilitário) sempre vem primeiro.
  • As flags são opcionais, dependendo da utilidade que você está usando. As flags sempre começam com um sinal de menos (-).
  • Os argumentos são as coisas em que o comando precisa agir ou as informações necessárias. Muitas vezes, nomes de arquivos.

Enquadramento

Contexto e finalidade

A linha de comando é uma maneira de controlar um computador sem um mouse ou uma GUI (interface gráfica do usuário). Antes de a Apple Computer começar a criar máquinas com ícones e pastas em que era possível clicar, a única maneira de interagir com o computador era pela linha de comando.

Como desenvolvedores, usamos a linha de comando porque ela é muito mais rápida e poderosa do que a GUI. Não é preciso perder tempo clicando por aí. A linha de comando permite realizar praticamente qualquer interação com o computador.

Como o terminal é uma interface muito mais simples, ele tem uma grande vantagem sobre a GUI quando você precisa se conectar remotamente a um computador por um link de rede. É algo que os desenvolvedores fazem com muita frequência, por exemplo, quando viajam.

Nesta lição, vamos aprender os comandos básicos para interagir com o computador: criar arquivos e diretórios, mover pastas, mudar de diretório e listar o conteúdo de uma pasta.

Objetivos de aprendizagem

Os estudantes poderão

  • Usar o Terminal para navegar por arquivos e pastas
  • Listar o conteúdo de uma pasta
  • Criar arquivos e pastas na linha de comando
  • Mover arquivos e pastas
  • Copiar arquivos e pastas
  • Excluir arquivos e pastas

Primeiros passos

Como acessar o terminal

Enquadramento e finalidade da seção

O Terminal oferece uma interface de linha de comando (CLI) para o sistema operacional. Com ele, você pode dar instruções diretas e baseadas em texto ao computador.

Para isso, precisamos iniciar o terminal com base no sistema que você está usando.

Quando o terminal for iniciado, ele vai começar no diretório inicial do seu computador (qualquer que seja o nome dele). O diretório principal é indicado pelo til ~.

Ao discutir nosso mundo dentro do Terminal, Diretórios são o mesmo que Pastas (às vezes, podemos chamá-los apenas de Diretórios).

Como mudar diretórios

Enquadramento e finalidade da seção

Para conversar com o computador no Terminal e dizer o que queremos fazer, precisamos falar uma linguagem comum. A linha de comando entende comandos escritos na linguagem de programação bash. Os comandos são acrônimos ou abreviações de palavras em inglês.

Ao navegar no terminal, é importante saber onde você está. Isso também se aplica à vida real: se você quiser chegar a algum lugar, primeiro precisa saber sua localização atual.

# See your current location - abbreviation for 'print working directory'
pwd

Listar arquivos e diretórios disponíveis

Dentro do seu diretório de trabalho, provavelmente há vários arquivos que podem ser acessados. Normalmente, usamos pistas visuais, como ícones, para saber o que está disponível. No entanto, seria difícil navegar no computador se estivéssemos apenas adivinhando onde os arquivos e pastas estão localizados. Na linha de comando, vamos usar um comando específico para listar o que podemos acessar de qualquer diretório de trabalho ou local.

Para ver quais arquivos ou pastas estão no diretório atual, use o comando ls (abreviação de "list") para conferir uma lista do conteúdo.

# See files and folders in current location - abbreviation for 'list'
ls

Mudar diretório de trabalho

Se você precisar acessar um arquivo ou diretório que não está na lista, mude o diretório de trabalho para facilitar o acesso.

A sintaxe para informar à linha de comando que você quer ir para um novo diretório (também conhecido como pasta) é cd seguida (na mesma linha) pelo caminho para a nova pasta.

Se você navegar até um diretório que está dentro do diretório em que você está (ou seja, uma subpasta do seu diretório de trabalho), use o comando cd seguido pelo nome da pasta.

# Change your current working directory (current location)
# Abbreviation for 'change directory'
cd Documents

Você também pode navegar começando pelo diretório inicial ~.

# Add a `~/` to begin from the home directory.
cd ~/Downloads

Se você mudou de diretório, mas precisa voltar para o diretório principal, navegue diretamente de volta para a página inicial usando ~ ou use .. para subir um nível.

# Option 1: navigate directly to the home directory
cd ~

# Option 2: navigate back one level
cd ..

O comando cd .. volta apenas um nível. Portanto, se você mudou de diretório três vezes (três níveis abaixo), precisará usar cd .. três vezes para voltar à página inicial, mas só precisará usar cd ~ uma vez.

Minidesafios

  • Use ls para ver o que está no diretório atual.
  • Volte ao diretório principal e use ls para ver o conteúdo da pasta inicial.
  • Escolha o nome de uma das pastas no diretório inicial e navegue até essa nova pasta.
  • Use o comando "list" para ver o que há dentro.

Dica: preenchimento automático com tab

Ao mudar de diretório com o comando cd, um único erro de digitação impede que o comando seja executado corretamente. No entanto, usar a tecla tab vai preencher automaticamente com o nome de qualquer diretório disponível que esteja dentro do diretório atual. Em vez de digitar cd Documents, digite apenas cd Do e pressione a tecla tab. O terminal vai preencher automaticamente o comando cd Documents/ para você. O / no final é opcional, mas informa que o destino é um diretório.

Esse preenchimento automático não apenas economiza tempo quando funciona, mas também fornece informações valiosas quando não funciona. Se o botão de tabulação não for preenchido automaticamente, provavelmente você cometeu um destes três erros comuns:

  1. O diretório que você quer acessar não está disponível no diretório de trabalho atual.
  2. Há dois diretórios com nomes iniciais semelhantes (como Documents e Downloads), e você não forneceu informações suficientes para que o preenchimento automático saiba qual deles você quer. Pressione tab novamente para ver uma lista dos diretórios que podem corresponder ao que você digitou. Em seguida, digite um pouco mais (o suficiente para que haja apenas uma correspondência) e pressione tab novamente.
  3. Você já incluiu um erro de digitação na primeira metade da palavra.

Quanto mais rápido você se acostumar a usar a tecla Tab para preencher automaticamente os comandos, mais fácil será lidar com situações frustrantes em que os comandos parecem não estar funcionando.

Diretórios principais e secundários

Diretórios e arquivos podem ter relações filho e pai entre si. Se directory_b estiver dentro de directory_a, directory_b será chamado de filho de directory_a. directory_a é conhecido como o pai de directory_b. Se um terceiro item, my_file, estiver dentro de um directory_b, ele será considerado um filho de directory_b e um neto de directory_a.

Essas relações são frequentemente ilustradas em fóruns com um diagrama de texto, como este:

directory_a/
  directory_b/
    my_file

Observe que os nomes de diretórios terminam com uma /, enquanto os nomes de arquivos não. Essa organização hierárquica é geralmente chamada de estrutura em árvore de um sistema de arquivos.

Irmãos

Se houver vários arquivos ou pastas no mesmo nível, eles serão chamados de irmãos. Por exemplo, se file_b e file_c estiverem localizados dentro de directory_a, eles serão elementos irmãos.

O diagrama de texto ficaria assim:

directory_a/
  file_b
  file_c

Como file_b e file_c são irmãos, eles têm o mesmo nível de indentação.

Caminhos de arquivos

Este é um diagrama de texto mais complexo que apresenta relações entre pai-filho e irmãos.

north_america/
  united_states/
    new_york/
      new_york_city/
        manhattan
        queens
        staten_island
        bronx
        brooklyn
    california/
      mountain_view
      los_angeles
    illinois/
      chicago
  mexico/
    mexico_city

Neste exemplo, new_york_city/ é um nome de diretório, mas também tem um caminho, que detalha como chegar lá: ~/north_america/united_states/new_york/new_york_city/.

Para mudar o diretório para new_york_city/,, navegue por etapas usando nomes ou use o caminho em um único comando.

# Option 1: in four steps, using directory names.
cd ~ # navigate home, where these folders are located
cd north_america/
cd united_states/
cd new_york/
cd new_york_city/

# Option 2: in one step, using the path.
cd ~/north_america/united_states/new_york/new_york_city/

Resumo dos comandos de navegação

# See your current location - abbreviation for 'print working directory'
pwd

# Change to a new location - abbreviation for 'change directory'
cd ~/Downloads

# Navigates into a child directory called `some_directory`
# Only works if `some_directory` is a child of the current directory
cd some_directory

# Navigates into the parent of the current directory
# `..` is shorthand for parent.
cd ..

# Will take you back home
cd

Minidesafios

  • Use pwd para descobrir a pasta em que você está.
  • Mude para outro diretório e confirme o novo local.
  • Tente de novo e acesse outra pasta. Use os novos comandos para conferir sua localização e os arquivos dentro desse diretório.

como criar arquivos e diretórios

Enquadramento e finalidade da seção

Como desenvolvedores, precisamos criar arquivos com código. Para manter esses arquivos organizados, precisamos criar pastas / diretórios onde podemos armazenar nossos arquivos.

Preste atenção na sua localização no terminal antes de criar arquivos e pastas.

# See your current location.
pwd

Para criar um arquivo, use o comando touch seguido pelo nome do arquivo.

# `touch` creates a new file.
touch style.css

Ao criar arquivos, adicione uma extensão para especificar o tipo. Exemplos de tipos de arquivo:

  • .js como um arquivo JavaScript
  • .html criar um arquivo HTML
  • .css cria um arquivo CSS
  • .md cria um arquivo Markdown

Os nomes de arquivos não podem incluir espaços.

# make a file - this will create a file in the current folder
touch my_text_file.txt

# make a file - this will create a file on the desktop
touch ~/Desktop/my_new_style_sheet.css

Como criar vários arquivos

É possível criar vários arquivos de uma só vez incluindo espaços entre cada um dos nomes.

# make multiple files - this will create multiple files in the current folder
touch my_new_js_file.js my_new_html_file.html my_second_html_file.html

Como criar diretórios

Para criar um diretório / pasta, use o comando mkdir , uma abreviação de "criar diretório", seguido pelo nome da pasta.

# make a folder - this will create a directory in the current folder
mkdir my_new_folder

# make a folder - this will create a directory on your desktop
mkdir ~/Desktop/my_new_desktop_folder

Como criar vários diretórios

É possível criar várias pastas de uma só vez incluindo espaços entre cada um dos nomes.

# make multiple folders - this will create multiple folders in the current
# directory
mkdir folder_one folder_two folder_three

Minidesafios

  • Criar um novo arquivo.
  • Crie alguns arquivos em um comando.
  • Crie um novo diretório.
  • Crie mais alguns diretórios. Tente usar apenas um comando para fazer isso.
  • Usando o que você sabe sobre como navegar em diretórios e criar arquivos e pastas, crie uma "family_tree" na sua área de trabalho usando arquivos e pastas.

Mudança e cópia

como mover arquivos e diretórios

Enquadramento e finalidade da seção

É possível mover um arquivo ou uma pasta na linha de comando, mas sempre precisamos especificar três coisas:

  1. Usamos o comando mv, abreviação de mover.
  2. Siga o comando de movimentação com o nome do arquivo ou da pasta que você quer mover.
  3. Siga o nome do arquivo com o destino para onde você quer movê-lo.

Por exemplo, se você tiver uma estrutura de arquivos como esta:

my_child_folder/
my_parent_folder/

É possível notar que ele não está organizado como deveria: eles são irmãos, mas deveriam ser pai e filho. Use este comando:

# move a directory - this will move the folder `my_child_folder` into the
# folder named `my_parent_folder` that is in the current folder
mv my_child_folder/ my_parent_folder/

A estrutura resultante será assim.

my_parent_folder/
  my_child_folder/

Confira outras variações do comando mv:

# move a directory - this will move the folder `my_folder` into the file named
# `my_desktop_folder` that is located on the Desktop
mv my_folder ~/Desktop/my_desktop_folder

# move a file - this will move the file `my_file.txt` into the file named
# `my_folder` that is in the current folder
mv my_file.txt my_folder

# move a file - this will move the file `my_file.txt` into the file named
# `my_desktop_folder` that is located on the Desktop
mv my_file.txt ~/Desktop/my_desktop_folder

Aviso : mv também é o comando para renomear um arquivo usando a sintaxe mv old_name new_name. Isso significa que, se você mover um arquivo para um diretório que não existe ou se digitar errado o destino, o arquivo será renomeado em vez de movido.

Minidesafios

  1. Crie cinco arquivos de texto (.txt).
  2. Crie um novo diretório
  3. Mova os cinco arquivos que você criou para a pasta.
  4. Crie uma pasta e mova essa nova pasta para dentro de outra.

como copiar arquivos e diretórios

Enquadramento e finalidade da seção

Ao criar webapps, talvez seja necessário duplicar um arquivo (se estivermos criando duas páginas da Web semelhantes, talvez não seja necessário começar do zero). A sintaxe do comando cp (copiar) é muito parecida com a sintaxe mv.

Como copiar um arquivo

O comando de cópia tem três partes:

  1. O comando cp, abreviação de copiar
  2. O nome do arquivo a ser copiado
  3. O nome da cópia (se ela ficar na mesma pasta) ou o local e o nome (se ela for movida para outra pasta).
# Copy a file named `my_file.txt` to a file called `my_file_copy.txt`
# The copy will be located in your Documents folder.
cp my_file.txt ~/Documents/my_file_copy.txt

# Copy a file named `my_file.txt` to a file called `my_file_copy.txt`.
# Since no directory was specified, this will occur within the same folder.
cp my_file.txt my_file_copy.txt

Se quiser que a cópia mantenha o mesmo nome do original, especifique o local da cópia sem um nome de arquivo.

# Copy a file named `my_file.txt` to your Documents folder.
# The destination ends with a directory, so the copy will have the same name.
cp my_file.txt ~/Documents/

Ter muitos arquivos com o mesmo nome pode ser confuso. Por isso, use esse método apenas se tiver certeza de que é o que você precisa.

Como copiar um diretório

Copiar uma pasta ou um diretório é um pouco mais complicado, porque provavelmente você quer copiar não apenas a pasta, mas também tudo o que está dentro dela.

  1. O comando cp -R, abreviação de copy recursive, é usado para pastas vazias e não vazias.
  2. O nome da origem (pasta ou arquivo que queremos mover)
  3. O nome da cópia (se ela ficar na mesma pasta) ou o local e o nome (se ela for movida para outra pasta).

Aviso: ao especificar o nome da cópia, se o arquivo ou a pasta não tiver sido criado antes, ele será criado quando você fizer a cópia. Se o arquivo foi criado antes de você executar o comando de cópia, ele vai substituir tudo o que estava nele. Portanto, tenha cuidado!

# copy a directory named `my_folder` from your Desktop folder to a folder
# called `my_folder_copy` in your Documents folder
cp -R ~/Desktop/my_folder ~/Documents/my_folder_copy

# copy a file named `my_file.txt` from your Desktop folder to your Documents
# folder
cp -R my_folder my_folder_copy

Observação: o componente -R do cp -R é chamado de flag. As flags sempre começam com um traço e são usadas em combinações com comandos para dar instruções mais específicas sobre como o comando deve ser executado.

Minidesafios

  1. Crie um arquivo chamado my_original.txt.
  2. Faça uma cópia de my_original.txt com um novo nome na mesma pasta.
  3. Crie um novo diretório
  4. Faça uma cópia desse diretório, mas dê um nome diferente a ele.
  5. Faça uma cópia do arquivo copiado (da etapa 2), mas coloque-o no diretório copiado (da etapa 4).

Como remover arquivos e pastas

Enquadramento e finalidade da seção

É possível excluir arquivos e pastas na linha de comando, mas essa ação é permanente.

Removendo um arquivo

Para remover um arquivo, use o comando rm (abreviação de remover) seguido pelo nome do arquivo.

# delete a file in the working directory
rm unwanted_file.txt

# delete a file not in the working directory
rm ~/Desktop/unwanted_file.txt

Remover um diretório vazio

Para remover um diretório vazio , use o comando rmdir, abreviação de remover diretório, seguido pelo nome da pasta.

# delete an empty folder
rmdir empty_directory

# delete an empty folder
rmdir ~/Documents/my_files/empty_directory

Remover um diretório que não está vazio

Para remover uma pasta que não está vazia, precisamos colocar uma flag -R, abreviação de recursivo, depois do comando rm, que informa ao computador para excluir o conteúdo dentro da pasta. Como atalho, alguns desenvolvedores usam a flag -Rf, que remove tudo (caso contrário, você pode receber solicitações para excluir alguns dos arquivos ou pastas secundários).

# delete a folder which contains other files or folders
rm -R directory_which_isnt_empty

# delete a folder which contains other files or folders
rm -R ~/Downloads/directory_which_isnt_empty

Aviso: usar o comando rm não é como a lixeira ou a seção de itens excluídos do seu e-mail. Esses arquivos não podem ser recuperados facilmente. Tenha EXTREMO CUIDADO ao excluir arquivos dessa forma.

Minidesafios

  1. Crie quatro arquivos.
  2. Exclua dois dos arquivos.
  3. Criar uma pasta.
  4. Crie outra pasta e um arquivo dentro dela.
  5. Exclua os dois diretórios.

O código deste laboratório está na seguinte pasta dentro do repositório de estudantes que você baixou do GitHub: command-line/labs/around-the-world

Contexto

Seu semestre no exterior está chegando, e é hora de começar a planejar suas viagens pela Europa...

Com três meses de vida pela frente, você quer aproveitar ao máximo cada viagem de fim de semana.

Felizmente, você não está começando do zero, e seus amigos já deram algumas dicas de atividades favoritas do semestre no exterior. Infelizmente, alguns dos arquivos foram misturados...

Não se preocupe, com a magia da linha de comando, você vai corrigir tudo rapidinho!

Tarefa

Verifique se cada cidade está no país correto e se cada pasta tem os monumentos certos. Tenha cuidado para não acabar em Amsterdam procurando a Torre Eiffel!

Se você estiver MUITO confiante, oculte a GUI e enfrente esse desafio direto da linha de comando. Você precisa ficar na pasta geral "ao redor do mundo" enquanto faz tudo isso. Isso significa usar caminhos absolutos ao se referir a pastas e arquivos.

Quando tiver certeza de que tudo está no lugar certo, é sua vez de assumir o controle dos próximos meses. Tenha ideias de novas cidades, países e monumentos que você PRECISA conhecer e adicione-os à sua árvore de arquivos.

Parabéns! Você aprendeu oficialmente a falar com o computador. Tudo pronto para ir além? Vamos falar sobre extensões...

Extensões

  1. Misture todos os arquivos novamente e vá para uma cidade de sua escolha. Reorganize os arquivos novamente, permanecendo nessa cidade.
  2. Teste um dos jogos divertidos de linha de comando vinculados abaixo
    Jogo Terminus
    Jogo avançado (prepare-se para pesquisar no Google)
  3. É fã de Star Wars? Tente executar telnet towel.blinkenlights.nl na linha de comando e pressione Enter… Em versões recentes do macOS, o comando telnet não é mais instalado por padrão. Nesse caso, use o comando nc towel.blinkenlights.nl 23.

O código deste laboratório está na seguinte pasta dentro do repositório de estudantes que você baixou do GitHub: command-line/labs/bashing-away-repetition

Pronto para acabar com a repetição no uso diário da linha de comando? Que ótimo, eu também!

Contexto

Se há uma coisa que os programadores odeiam, é repetição. Como cientistas da computação, nosso trabalho é fazer com que o computador faça o máximo possível do nosso trabalho. Escrever scripts bash vai ajudar a tornar o uso da linha de comando mais eficiente.

Primeiro, o que é um script bash?

ÓTIMA pergunta. Felizmente, nosso amigo Ryan Chadwick, do melhor lugar para encontrar tutoriais de linha de comando, tem uma resposta para nós.

Um script Bash permite definir uma série de ações que o computador vai executar sem que precisemos inserir os comandos. Se uma tarefa específica for feita com frequência ou for repetitiva, um script pode ser uma ferramenta útil.

Sem repetição? É disso que estou falando.

Tutorial

Primeiro, para executar o script, você precisa dar permissão ao computador. Para isso, execute o comando abaixo.

chmod 755 myScript.sh

Chegou a hora de escrever seu primeiro programa. Acesse seu myScript.sh. Veja se é possível abrir o arquivo na linha de comando. No final do arquivo, adicione:

echo "Hello World"

Agora, execute:

./myScript.sh

no terminal. ** TA DA ** você vai ver "Hello World" impresso no terminal.

comemoração

Tudo o que você escrever no script bash será executado como se tivesse sido digitado no terminal. Vamos ver mais um exemplo antes de passar para as extensões. Primeiro, crie um arquivo para seu script. Ele pode ter qualquer nome, mas precisa ter a extensão .sh. Em seguida, digite chmod 755 e o nome do script no terminal e pressione "Enter" para dar permissão de execução. Sempre que você iniciar um novo script bash, conclua essas duas etapas.

Desafio introdutório

Agora, vamos tentar escrever um script que cria uma nova pasta. Qual comando cria uma nova pasta? Se você está pensando em uma palavra que começa com m e termina com kdir, está no caminho certo. Escreva o comando que vai criar sua nova pasta e dê um nome legal a ela no novo arquivo .sh. Em seguida, execute o comando no terminal.

Se funcionar, passe para os outros desafios listados abaixo. Se você ainda estiver um pouco confuso, consulte o laboratório "Ao redor do mundo" e pense em como você criou novas pastas de países e cidades.

Use o tutorial vinculado acima e prepare suas melhores habilidades de pesquisa no Google. Escrever e executar scripts que fazem o seguinte:

Tarefas principais

  1. Adicione um comando ao arquivo criado acima que navega até a pasta que você está criando. (Qual comando usamos para mudar de diretório?)
  • Adicione um carimbo de data/hora ao nome da nova pasta. Por exemplo, seu programa precisa criar uma pasta chamada "2017-12-07my_super_cool_folder".
  1. Imprime "Meu diretório atual é: " seguido pelo seu diretório de trabalho e "Aqui está uma lista de tudo neste diretório! " seguido pelo conteúdo do seu diretório atual.
  2. Descubra como dar uma entrada ao seu script bash e criar um arquivo com base nessa string de entrada. O tutorial vinculado anteriormente no laboratório tem alguns exemplos ótimos na seção de variáveis para conferir.
  3. Peça o nome do usuário e imprima "Olá, muito prazer em conhecer você, insira o nome aqui"
  • Peça mais informações ao usuário e crie uma mensagem personalizada para ele.

CONTEXTO

A linha de comando (ou terminal) oferece uma interação direta com o sistema operacional do computador. Tudo o que a interface gráfica do usuário (GUI) faz, mas com comandos de texto, desde a navegação até a criação de novos arquivos e a execução de scripts. A linha de comando será usada para abrir arquivos e iniciar o ambiente de desenvolvimento ao usar o Google App Engine.

Linha de comando em ação

Como acessar o terminal

Atalho do Mac:

  • Abra o Spotlight com Command + espaço.
  • Digite Terminal na Pesquisa Spotlight.
# See your current location - abbreviation for 'print working directory'.
pwd

# Change to a new location - abbreviation for 'change directory'.
cd /Users/jsmith/Downloads

# Navigate into a child directory called `some_directory`. This only works if
# `some_directory` is a child of the current directory.
cd some_directory

# Navigate into the parent of the current directory. `..` is shorthand for parent.
cd ..

# Return home.
cd

# Change directories to a folder called `my_folder` that is within the current
# directory.
cd my_folder ```

#### File Path Shorthand `~`

The `~` is generally short for "home". Home can be configured to mean different
things for different users and across different operating systems, but in the
example above, for a Mac user named "jsmith", the `~` is short for that user's
home directory: `/Users/jsmith`.

This means that `~/Downloads` and `/Users/jsmith/Downloads` are the same for
this user. But starting with a `~` allows us to specify absolute file paths
(agnostic of your current working directory, and starting at the root `/`)
without having to write out a full path each time.

### <a id="view"></a>Viewing the Contents of Folders

```bash
# See files and folders in current location - this is an abbreviation for 'list'.
ls

Como criar arquivos e pastas

Como criar arquivos

# Make a file - this will create a file in the current folder.
touch my_text_file.txt

# Make a file - this will create a file on the Desktop.
touch ~/Desktop/my_new_style_sheet.css

# Make multiple files - this will create multiple files in the current folder.
touch my_new_js_file.js my_new_html_file.html my_second_html_file.html

Como criar pastas

# Make a folder - this will create a directory in the current folder.
mkdir my_new_folder

# Make a folder - this will create a directory on your Desktop.
mkdir ~/Desktop/my_new_desktop_folder

# Make multiple folders - this will create multiple folders in the current
# directory.
mkdir folder_one folder_two folder_three

Movimentação de arquivos e pastas

Movimentação de arquivos

# Move a file - this will move the file `my_file.txt` into the folder named
# `my_folder` that is in the current folder.
mv my_file.txt my_folder
# Note that this will rename the file instead of moving it if the destination
# folder does not yet exist.  Read below for more details on renaming.

# Move a file - this will move the file `my_file.txt` into the folder named
# `my_desktop_folder` that is located on the Desktop.
mv my_file.txt ~/Desktop/my_desktop_folder

Movimentação de pastas

# Move a directory - this will move the folder `my_child_folder` into the
# folder named `my_parent_folder` that is in the current folder.
mv my_child_folder my_parent_folder

# Move a directory - this will move the folder `my_folder` into the folder
# named `my_desktop_folder` that is located on the Desktop.
mv my_folder ~/Desktop/my_desktop_folder

Mover é renomear

Lembre-se de que mv também é o mesmo comando usado para renomear arquivos ou pastas.

# Rename a file from `old_name.txt` to `new_name.txt`.
mv old_name.txt new_name.txt

Como copiar arquivos e pastas

Copiando arquivos

# Copy a file named `my_file.txt` from your Desktop folder to your Documents
# folder.
cp ~/Desktop/my_file.txt ~/Documents

# Copy a file named `my_file.txt` to a file called `my_file_copy.txt` within
# the same folder.
cp my_file.txt my_file_copy.txt

Copiar pastas

# Copy a directory named `my_folder` (and its contents) from your Desktop
# folder to a folder called `my_folder_copy` in your Documents folder.
cp -r ~/Desktop/my_folder ~/Documents/my_folder_copy

# Copy a directory named `my_folder` (and its contents) from the current
# working directory to a folder called `my_folder_copy` in the current working
# directory.
cp -r my_folder my_folder_copy

Como excluir arquivos e pastas

Excluir arquivos

# Delete a file in the current working directory.
rm unwanted_file.txt

# Delete a file using its exact location and name.
rm ~/Desktop/unwanted_file.txt

Excluir pastas

# Delete an empty folder.
rmdir empty_directory

# Delete a folder which contains other files or folders.
rm -r directory_which_isnt_empty

Dicas e sugestões

  • Pratique o uso da linha de comando, mesmo quando não achar necessário. Com o tempo, você vai melhorar.
  • A tecla tab preenche automaticamente o nome do arquivo ou da pasta (ela diferencia maiúsculas de minúsculas).
  • Se houver apenas um arquivo ou pasta correspondente restante, ele será preenchido automaticamente.
  • Se houver vários arquivos ou pastas correspondentes, pressione a tecla Tab duas vezes para ver uma lista das correspondências restantes.
  • As setas para cima e para baixo alternam o histórico de comandos para que você não precise digitar novamente.
  • Use o comando clear para limpar a janela do terminal. Isso mantém todo o seu trabalho anterior. Role para cima para conferir.
  • Use reset para reiniciar o terminal. Isso não vai manter seu trabalho anterior na tela, mas pode resolver vários problemas se o Terminal começar a se comportar de maneira imprevisível.
  • Pressione option + arrow para mover o cursor por uma palavra

Resumo das práticas recomendadas

  • Navegue pelo terminal usando cd, cd .. ou cd <folder name>.
  • Veja o conteúdo das pastas usando ls.
  • Crie arquivos usando touch e pastas usando mkdir.
  • Mova arquivos e pastas usando mv <item to move> <destination>.
  • Copie arquivos e pastas usando o cp <item to copy> <destination>.
  • Exclua arquivos e pastas usando rm <item to remove>.

Pergunta 1

O que você usaria para identificar seu diretório de trabalho atual?

  1. pwd
  2. ls
  3. cd
  4. mkdir
  5. touch

Pergunta 2

Como você subiria dois níveis do seu diretório de trabalho atual?

  1. mv ~
  2. cd ../..
  3. mv up/up
  4. cd ^(2)

Pergunta 3

Qual comando você usaria para renomear um arquivo?

  1. mv
  2. cd
  3. ls
  4. python
  5. rename

Pergunta 4

Por que o comando mv script.py geraria um erro?

  1. Porque "script.py" é um nome de arquivo inválido.
  2. Porque o comando mv não pode ser seguido por outras informações.
  3. Essa é uma pergunta difícil, porque não geraria um erro.
  4. Porque mover um arquivo requer pelo menos dois argumentos: um destino e um destino

Pergunta 5

O que o comando cd ~ faria?

  1. Mude o diretório de trabalho para o diretório inicial.
  2. Repita o comando anterior.
  3. Use um algoritmo para determinar o comando mais útil no momento.
  4. Gerar um erro.

Pergunta 6

Qual das opções a seguir NÃO é um motivo para usar a tecla Tab para preencher automaticamente os nomes de arquivos?

  1. Porque economiza tempo.
  2. Porque ajuda a eliminar erros de ortografia.
  3. Isso acontece porque ele exige menos capacidade de processamento.

Pergunta 7

Se um novo desenvolvedor tentar criar um arquivo chamado "my script.py", por que o comando touch my script.py não vai funcionar?

  1. Porque touch não pode criar novos arquivos.
  2. Porque .py não é uma extensão de arquivo válida.
  3. Porque ele vai criar dois arquivos, um chamado "my" e outro chamado "script.py", em vez de apenas um.
  4. Porque não é possível criar novos arquivos na linha de comando.

Pergunta 1

O que você usaria para identificar seu diretório de trabalho atual?

pwd

Pergunta 2

Como você subiria dois níveis do seu diretório de trabalho atual?

Com cd ../.., você sobe dois níveis (cada .. representa um nível acima).

Pergunta 3

Qual comando você usaria para renomear um arquivo?

mv é usado para mover um arquivo de um local para outro e também pode ser usado para mudar o nome do arquivo.

Pergunta 4

Por que o comando mv script.py geraria um erro?

O comando mv exige dois argumentos: um arquivo de origem e um de destino.

Pergunta 5

O que o comando cd ~ faria?

Ele muda o diretório de trabalho para o diretório inicial. O caractere especial ~ é usado para identificar o diretório inicial do usuário atual. Também pode ser usado em combinação com um nome de usuário diferente: ~user2 para apontar para a pasta inicial.

Pergunta 6

Qual das opções a seguir NÃO é um motivo para usar a tecla Tab para preencher automaticamente os nomes de arquivos?

Porque exige menos capacidade de processamento não está correto. tab exige uma quantidade (geralmente insignificante) de poder de processamento para verificar as pastas em busca de nomes de arquivos para preenchimento automático, mas economiza tempo e evita erros de ortografia no processo.

Pergunta 7

Se um novo desenvolvedor tentar criar um arquivo chamado "my script.py", por que o comando touch my script.py não vai funcionar?

Ele vai criar dois arquivos em vez de apenas um. O comando touch vai criar novos arquivos. No terminal, os espaços são separadores, não caracteres a serem incluídos no nome do arquivo. É melhor evitar completamente, mas, se você precisar usar, o nome do arquivo deve estar entre aspas duplas:

touch "my script.py"

Pergunta 1

O comando do terminal para mudar de diretório é:

  1. move
  2. mkdir
  3. pwd
  4. cd

Pergunta 2

Qual comando você executaria se quisesse navegar até a pasta mãe do seu diretório de trabalho atual?

  1. cd up
  2. cd .
  3. cd ..
  4. cd ~

Pergunta 3

Qual comando é usado para criar arquivos?

  1. touch
  2. mkdir
  3. create
  4. pwd

Pergunta 4

Qual dos comandos a seguir cria dois arquivos chamados index.html e style.css?

  1. touch index.html, touch style.css
  2. touch index.html, style.css
  3. touch index.html style.css
  4. touch index.html + style.css

Pergunta 5

Qual comando você usa para renomear um arquivo ou uma pasta?

  1. rename
  2. move
  3. mv
  4. rm

Pergunta 6

Qual flag os comandos rm e cp precisam para trabalhar com pastas?

  1. -f
  2. -r
  3. -x
  4. -d

Pergunta 7

Para mover projects para ~/Documents e renomear como Projects, qual comando precisa ser inserido no espaço em branco?

cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects
  1. pwd
  2. cd projects
  3. mv ~ projects
  4. cd ~/Documents
  5. ls

Pergunta 8

O que o comando a seguir faz?

rm -r projects

  1. Excluir um arquivo chamado projects
  2. Excluir uma pasta chamada projects
  3. Renomear um arquivo chamado projects
  4. Pesquisar o conteúdo do diretório atual por projects

Pergunta 1

O comando do terminal para mudar de diretório é:

O comando do terminal para mudar de diretório é cd. O comando em si é uma abreviação de "change directory" (mudar diretório).

Pergunta 2

Qual comando você executaria se quisesse navegar até a pasta mãe do seu diretório de trabalho atual?

O comando para navegar até a pasta principal é cd ..

Pergunta 3

Qual comando é usado para criar arquivos?

O comando para criar arquivos é touch

Pergunta 4

Qual dos comandos a seguir cria dois arquivos chamados index.html e style.css?

O comando touch index.html style.css vai criar os dois arquivos. Não é necessário usar vírgula, e é possível criar qualquer número de arquivos dessa forma, separados por espaços.

Pergunta 5

Qual comando você usa para renomear um arquivo ou uma pasta?

Embora signifique "mover" e possa ser usado para mover arquivos ou pastas, mv também pode ser usado para renomear arquivos e pastas.

Pergunta 6

Qual flag os comandos rm e cp precisam para trabalhar com pastas?

Os comandos rm e cp exigem a flag -r para funcionar em pastas, já que a flag -r significa "recursivo" e executa novamente o comando para todos os arquivos e pastas contidos nela.

Pergunta 7

Para mover projects para ~/Documents e renomear como Projects, qual comando precisa ser inserido no espaço em branco?

cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects

Como começamos no diretório inicial, precisamos executar cd ~/Documents para que o comando final seja executado no diretório correto.

Pergunta 8

O que o comando a seguir faz?

rm -r projects

O comando vai excluir um arquivo OU uma pasta chamada projects porque é chamado com a flag -r ou recursiva. Sem essa flag, o comando só funcionaria para excluir um arquivo com esse nome.