Um Primer da Linha de Comando do Linux

Introdução

Nota: O terminal interativo neste tutorial está atualmente desativado enquanto trabalhamos para melhorar nossas experiências de aprendizado interativo. Você ainda pode usar este tutorial para aprender sobre a linha de comando e praticar comandos Linux, mas precisará usar o terminal do seu computador ou uma máquina virtual.

Hoje, muitos de nós estamos familiarizados com computadores (desktops e laptops), smartphones e tablets que possuem interfaces gráficas de usuário (também conhecidas como GUIs), permitindo-nos navegar em aplicativos, na web e em nossos arquivos (como documentos e fotos) por meio de uma experiência visual. Os sistemas operacionais Windows, macOS e Linux apresentam cada um variedades de ambiente de desktop (com imagens de pastas e arquivos, por exemplo), e menus suspensos, todos os quais fornecem acesso a programas de computador, aplicativos e nossas próprias mídias.

Embora as GUIs possam ser uma forma intuitiva de usar um computador para muitos usuários, muitas vezes elas não nos fornecem o maior controle sobre nossas máquinas, e podem nos impedir de ter acesso administrativo completo em nossos computadores, incluindo instalar, modificar ou excluir software ou arquivos. Além disso, como as GUIs são em grande parte visuais, muitas vezes elas não são tão acessíveis quanto poderiam ser para todos os usuários.

Uma maneira de navegar tanto em seu próprio computador pessoal quanto em servidores de nuvem remotos sem uma GUI é através de um terminal baseado em texto ou interface de linha de comando (CLI).

Interfaces de terminal existem em quase todos os sistemas operacionais de computadores, e emuladores de terminal também estão disponíveis como aplicativos para tablets e smartphones. Os terminais proporcionam aos usuários um acesso geral maior às suas máquinas através de maior acesso de administrador, maior capacidade de personalizar ambientes e oportunidades para automatizar processos. Eles também fornecem aos usuários a capacidade de acessar computadores remotos, como servidores na nuvem.

Este tutorial fornecerá aos usuários que são novos em ambientes de terminal o básico de como usar uma interface de linha de comando através de um terminal web incorporado em seu navegador, que você pode iniciar abaixo. Se você já tem alguma familiaridade com terminais, pode preferir passar pelo nosso tutorial Introdução ao Terminal Linux em vez disso. Uma vez que você complete este tutorial, você deve ter uma compreensão de como usar um terminal em um computador ou servidor Linux (ou macOS).

Entendendo a Janela do Terminal

Quando você tem acesso a um novo computador ou smartphone, provavelmente deseja ligá-lo e ter uma ideia de como usá-lo, verificando quais aplicativos estão disponíveis e aprendendo onde estão as coisas para que você possa personalizar o dispositivo para atender às suas necessidades. Você pode se familiarizar com um computador através de um terminal de forma semelhante.

O terminal interativo que você iniciou nesta janela do navegador, clicando no botão Iniciar um Terminal Interativo! acima, exibe um retângulo branco na parte inferior da janela do seu navegador:

Se você ainda não iniciou o terminal, por favor faça isso agora usando o botão no início deste tutorial.

No seu terminal interativo do navegador, deve haver um cifrão, $ e um cursor piscando. É aqui que você começará a digitar comandos para dizer ao terminal o que fazer.

O terminal que você iniciou é um terminal Ubuntu 20.04. Ubuntu é uma distribuição popular do Linux, que originalmente foi baseada no sistema operacional Unix. O sistema operacional macOS também é baseado em Unix. Se você estiver lendo este tutorial em um computador com Linux ou macOS, deverá ter um terminal em seu sistema operacional que funcione de forma semelhante ao terminal incorporado que usaremos neste guia.

Em muitos desses sistemas operacionais Unix (ou baseados em *nix), os símbolos no final do prompt podem ser um símbolo $ ou um símbolo #, que significam o seguinte:

  • $ ou cifrão — você está conectado como um usuário comum
  • # ou símbolo de hashtag/tralha — você está conectado como um usuário com privilégios elevados

O usuário que é indicado no ambiente com # também é conhecido como usuário root, que é considerado um super usuário, ou administrador, por padrão.

Para nossos propósitos dentro do terminal do navegador abaixo, você está logado como um usuário comum, mas também possui privilégios de administrador através do comando sudo. Como este é um terminal temporário, você não precisa se preocupar com o que digita no terminal, pois iremos destruir tudo assim que terminarmos. Da mesma forma, em um servidor em nuvem, é possível destruir um servidor e começar do zero se algo der errado.

Por favor, observe que é melhor ter mais cuidado ao trabalhar no terminal de um computador local, pois pode haver alterações que você pode fazer como administrador no terminal que podem causar mudanças permanentes no computador que você está usando.

Neste ponto, com seu terminal lançado no navegador, você pode começar a digitar nele usando seu computador local. Seu texto aparecerá no cursor piscando. Vamos aprender sobre o que podemos digitar aqui nas próximas seções.

Familiarizando-se com Diretórios

Começaremos a trabalhar com o terminal digitando um comando. Um comando é uma instrução dada por um usuário, comunicando o que o usuário quer que o computador faça. Você irá digitar seus comandos no terminal e então pressionar ENTER ou RETURN quando estiver pronto para que o computador execute determinado comando.

Digite o seguinte comando seguido de ENTER. Você também pode copiar o comando ou pedir para executá-lo em um terminal interativo lançado clicando nos links relevantes no bloco de código abaixo quando você passar o mouse sobre ele.

  1. pwd

Depois de executar este comando, você receberá a seguinte saída:

Output
/home/sammy

O comando pwd significa “path working directory” e permite saber onde você está dentro do sistema de arquivos atual.

Neste exemplo, você está no diretório (ou pasta) chamado /home/sammy, que representa o usuário chamado sammy. Se estiver conectado como root, um usuário com privilégios elevados, então o diretório seria chamado /root. Em um computador pessoal, este diretório pode ser chamado pelo nome do usuário que é dono do computador. O computador de Sammy Shark pode ter /sammy ou /sammy-shark ou /home/sammy como seu diretório principal do usuário.

Neste momento, este diretório está vazio. Vamos criar um diretório para armazenar os arquivos que estaremos criando conforme avançamos neste tutorial, que podemos chamar de files, por exemplo.

Para fazer isso, vamos usar o comando mkdir, que significa “criar pasta”. Depois de digitar o comando, precisaremos escrever o nome da pasta, que passará o valor para o comando para que o comando possa criar este diretório. Este valor (o nome da pasta) é conhecido como um argumento, que é uma entrada sendo fornecida ao comando. Se você estiver familiarizado com a gramática da linguagem natural, pode pensar no argumento como um objeto que está sendo agido pelo verbo do comando.

Para criar um novo diretório chamado files, vamos escrever o seguinte, com mkdir sendo o comando e files sendo o argumento:

  1. mkdir files

Após executar este comando, você não receberá nenhuma saída além de uma nova linha com um cursor piscando. Com esta linha nova no seu terminal, você está pronto para o seu próximo comando.

Listando Conteúdos e Entendendo Permissões

Como não recebemos nenhum feedback concreto sobre nosso novo diretório ainda, vamos usar um comando para aprender mais sobre o que está no nosso diretório de trabalho atual. Você pode confirmar que o novo diretório está realmente lá listando os arquivos no diretório, com o comando ls (significando “listar”):

  1. ls

Você receberá uma saída que confirma que o diretório files está lá:

Output
files

Isso nos fornece informações gerais sobre o que está em nosso diretório de trabalho atual. Se quisermos ter mais detalhes, podemos executar o comando ls com o que é chamado de flag. Nos comandos do Linux, uma flag é escrita com um hífen - e letras, passando opções adicionais (e mais argumentos) para o comando. Em nosso exemplo, vamos adicionar a flag -l, que — quando combinada com ls — denota que gostaríamos de usar a opção para usar um formato de listagem longa com nosso comando.

Vamos digitar este comando e flag, assim:

  1. ls -l

Ao pressionar ENTER, receberemos a seguinte saída em nosso terminal:

Output
total 4 drwxr-xr-x 2 sammy sammy 4096 Nov 13 18:06 files

Aqui, há duas linhas de saída. A primeira linha se refere a blocos de memória do computador sendo alocados para este diretório, a segunda linha na maioria das vezes se refere às permissões do usuário no arquivo.

Para obter uma saída um pouco mais legível para humanos, também podemos passar a flag -h ou --human-readable, que imprimirá tamanhos de memória em um formato legível para humanos, como abaixo. Geralmente, um hífen - refere-se a opções de uma única letra, e dois hífens -- referem-se a opções escritas em palavras. Note que algumas opções podem usar ambos os formatos. Podemos construir várias opções em um comando encadeando flags juntas, como em -lh.

Por exemplo, os dois comandos abaixo entregam os mesmos resultados mesmo que sejam escritos de maneira diferente:

  1. ls -lh
  1. ls -l --human-readable

Ambos esses comandos retornarão a seguinte saída, semelhante à saída acima, mas com um contexto maior dos blocos de memória:

Output
total 4.0K drwxr-xr-x 2 sammy sammy 4.0K Nov 13 18:06 files

A primeira linha de saída nos informa que 4K de memória do computador é dedicada à pasta. A segunda linha de saída possui muitos mais detalhes, os quais iremos abordar com mais detalhes. Uma referência geral de alto nível de todas as informações que iremos cobrir é indicada na tabela abaixo.

File type Permissions Link count Owner Group File size Last modified date File name
d rwxr-xr-x 2 sammy sammy 4.0K Nov 13 18:06 files

Você notará que o nome do nosso diretório, files, está no final da segunda linha de saída. Este nome indica qual item específico no diretório do usuário /home/sammy está sendo descrito pela linha de saída. Se tivéssemos outro arquivo no diretório, teríamos outra linha de saída com detalhes sobre esse arquivo.

No início da linha, há uma lista de caracteres e traços. Vamos detalhar o significado de cada um dos caracteres:

Character Description
d directory (or folder) — a type of file that can hold other files, useful for organizing a file system; if this were - instead, this would refer to a non-directory file
r read — permission to open and read a file, or list the contents of a directory
w write — permission to modify the content of a file; and to add, remove, rename files in a directory
x execute — permission to run a file that is a program, or to enter and access files within a directory

Nos primeiros caracteres drwx da string, a primeira letra d significa que o item files é um diretório. Se este fosse um arquivo que não é um diretório, esta string de caracteres começaria com um hífen em vez disso, como em -rwx, onde o primeiro hífen significa um arquivo que não é um diretório. As três letras seguintes, rwx, representam as permissões para o proprietário do diretório files, e significam que o diretório files pode ser lido, escrito e executado pelo proprietário do arquivo. Se algum desses caracteres fosse substituído por hífens, isso significaria que o proprietário não possui o tipo de permissão representado por esse caractere. Discutiremos como identificar o proprietário de um arquivo em breve.

Os próximos três caracteres na saída são r-x, que representam as permissões do grupo para o diretório files. Neste caso, o grupo tem permissões de leitura e execução, mas não permissões de escrita, já que o w é substituído por um -. Discutiremos como identificar o grupo em breve.

Os últimos três caracteres da primeira string, r-x, representam as permissões para quaisquer outros grupos que tenham acesso à máquina. Neste caso, esses grupos de usuários também podem ler e executar, mas não escrever.

O número 2 na saída refere-se ao número de links para este arquivo. No Linux, links fornecem um método para criar atalhos para ajudar os usuários a navegar pelo sistema de arquivos. Quando você criou este arquivo, o Linux fez algum trabalho em segundo plano para criar um link absoluto para o arquivo e um link auto-referencial para o arquivo para permitir que os usuários naveguem ao longo de um caminho relativo. Vamos discutir caminhos absolutos e relativos na próxima seção.

Após o número 2, a palavra sammy é exibida duas vezes. Esta parte da saída fornece informações sobre o proprietário e grupo associados ao diretório files. A primeira instância de sammy nesta linha refere-se ao proprietário do diretório, cujas permissões vimos anteriormente são rwx. O usuário sammy é o proprietário, pois criamos o diretório files como o usuário sammy e somos o proprietário atual do arquivo. Embora o usuário sammy seja o único usuário em nosso ambiente atual, sistemas operacionais do tipo Unix geralmente têm mais de um usuário e, portanto, é útil saber qual usuário é o proprietário de um arquivo.

A segunda instância de sammy refere-se ao grupo que tem acesso ao diretório files, cujas permissões vimos anteriormente são r-x. Neste caso, o nome do grupo é o mesmo que o nome de usuário do proprietário sammy. Em ambientes do mundo real, pode haver outros grupos no sistema operacional que tenham acesso ao diretório, como staff ou um nome de usuário como admin.

O restante dos detalhes desta linha de saída são o 4.0K para a alocação de memória do diretório na máquina e a data em que o diretório foi modificado pela última vez (até agora, acabamos de criá-lo).

Com esse maior entendimento dos sistemas de arquivos e permissões, podemos avançar para a navegação no sistema de arquivos em nosso terminal Linux.

Até agora, aprendemos como determinar onde estamos em um sistema de arquivos, como criar um novo diretório, como listar arquivos e como determinar permissões.

Vamos aprender a seguir como nos movimentar no sistema de arquivos. Criamos um novo diretório, mas ainda estamos no diretório principal do usuário /home/sammy. Para entrar no diretório /home/sammy/files que criamos, usaremos o comando cd e passaremos o nome do diretório para o qual queremos nos mover como argumento. O comando cd significa “change directory,” e o construiremos assim:

  1. cd files

Novamente, você não receberá outra saída além de uma nova linha com um cursor piscando, mas podemos verificar se estamos no diretório /home/sammy/files com o comando pwd que usamos anteriormente:

  1. pwd

Você receberá a seguinte saída, confirmando onde você está:

Output
/home/sammy/files

Isso valida que você está no diretório /home/sammy/files do diretório de usuário /home/sammy. Essa sintaxe lhe parece familiar? Pode lembrá-lo de um URL de site com suas barras diagonais, e, de fato, os sites são estruturados em servidores dentro de diretórios também.

Vamos para o diretório primário do servidor. Independentemente de onde estivermos em um sistema de arquivos, sempre podemos usar o comando cd / para ir para o diretório primário:

  1. cd /

Para confirmar que nos movemos e descobrir o que está neste diretório, vamos executar nosso comando de listagem:

  1. ls

Receberemos a seguinte saída:

Output
bin boot dev etc home lib lib32 lib64 libx32 media mnt opt proc root run s sbin srv sys tmp usr var

Há muitos arquivos lá dentro! O diretório / é o diretório principal de um servidor Linux, referido como diretório “root”. Note que o diretório raiz é diferente do usuário “root” padrão. Você pode pensar no diretório / como a artéria principal de uma máquina Linux, pois contém todas as pastas necessárias para executar o computador. Por exemplo, o diretório sys contém o kernel Linux e informações do sistema no sistema de arquivos virtual. Se você gostaria de aprender mais sobre cada um desses diretórios, você pode visitar a documentação da Linux Foundation.

Você também notará que há um diretório em que já estivemos, o diretório de usuário /home. A partir do diretório /, podemos mudar de diretório de volta para /home e depois para files, ou podemos ir diretamente para essa pasta digitando o caminho absoluto lá com cd:

  1. cd /home/sammy/files

Agora, se você executar pwd, você receberá /home/sammy/files como saída.

A file path is the representation of where a file or directory is located on your computer or server. You can call a path to a file or directory in either a relative or absolute way. A relative path would be when we move to a location relative to our current working directory, like we did when we were already in /home/sammy/ and then moved into files/. An absolute path is when we call the direct line to a location, as we did above with /home/sammy/files, showing that we started in the / directory, called the /home/sammy/ user directory and then the nested files/ directory.

Além disso, o Linux utiliza a notação de ponto para ajudar os usuários a navegar por meio de caminhos relativos. Um único . representa o diretório em que você está atualmente, e dois pontos .. representam o diretório pai. Então, de onde estamos atualmente (/home/sammy/files), podemos usar dois pontos para retornar ao diretório pai /home/sammy do usuário, como este:

  1. cd ..

Se você executar pwd, você receberá /home/sammy como saída, e se você executar ls, você receberá files como saída.

Outro símbolo importante para se familiarizar é ~, que representa o diretório inicial de sua máquina. Aqui, nosso diretório inicial é chamado de /home/sammy para o usuário sammy, mas em uma máquina local pode ser seu próprio nome como em sammy-shark/.

Você pode digitar o seguinte de qualquer lugar em sua máquina e retornar a este diretório inicial:

  1. cd ~

Neste ponto, sinta-se à vontade para navegar pelo sistema de arquivos com os comandos que você aprendeu até agora. Na próxima seção, começaremos a trabalhar com arquivos de texto.

Criando e Modificando Arquivos de Texto

Agora que temos uma base no sistema de arquivos do Linux e como nos movimentar nele, vamos começar a criar novos arquivos e aprender como manipular texto na linha de comando.

Vamos primeiro garantir que estamos no diretório files/ da pasta do usuário /home/sammy, o que podemos fazer verificando com pwd, ou mudando de diretório no caminho absoluto:

  1. cd /home/sammy/files

Agora, vamos criar um novo arquivo de texto. Faremos um arquivo .txt, que é um arquivo padrão que pode ser lido em diferentes sistemas operacionais. Ao contrário dos arquivos .doc, um arquivo .txt é composto de texto não formatado. Texto não formatado, incluindo o texto em arquivos .txt, pode ser facilmente utilizado na linha de comando e, portanto, pode ser usado ao trabalhar com dados textuais de forma programática (como em análise de texto automatizada, para extrair informações de texto, e mais).

Vamos começar usando o comando touch, que pode criar um novo arquivo ou modificar um arquivo existente. Para usá-lo, você pode usar o comando touch e passar o nome do arquivo de texto que deseja criar como argumento, conforme demonstrado abaixo.

  1. touch ocean.txt

Assim que pressionar ENTER, você receberá uma nova linha do prompt de comando e poderá listar o conteúdo atual de files/ para garantir que foi criado.

  1. ls
Output
ocean.txt

Até agora, criamos um arquivo ocean.txt que não contém texto no momento da criação.

Se quisermos criar um arquivo de texto que seja inicializado com texto, podemos usar o comando echo, que é usado para exibir strings de texto no Linux.

Podemos usar echo diretamente na linha de comando para fazer a interface repetir depois de nós. O primeiro programa tradicional, "Olá, Mundo!", pode ser escrito com echo assim:

  1. echo Hello, World!
Output
Hello, World!

Nomeado em homenagem a Eco da Metamorfose de Ovídio, o comando echo retorna o que solicitamos. Neste caso, ecoou “Olá, Mundo!” Por si só, no entanto, o comando echo não nos permite armazenar o valor do nosso texto em um arquivo de texto. Para fazer isso, precisaremos digitar o seguinte:

  1. echo "Sammy the Shark" > sammy.txt

O comando acima usa echo, depois o texto que gostaríamos de adicionar ao nosso arquivo entre aspas, em seguida, o operador de redirecionamento >, e finalmente o nome do nosso novo arquivo de texto, sammy.txt.

Podemos verificar se nosso novo arquivo existe, novamente com ls.

  1. ls
Output
ocean.txt sammy.txt

Agora temos dois arquivos de texto em nossa pasta de usuário /home/sammy/files. Em seguida, podemos confirmar que o arquivo sammy.txt realmente contém o texto que pedimos para o terminal ecoar para ele. Podemos fazer isso com o comando cat. Abreviação de concatenar, o comando cat é muito útil para trabalhar com arquivos. Entre suas funções está mostrar o conteúdo de um arquivo.

  1. cat sammy.txt

Assim que executarmos o comando, receberemos a seguinte saída:

Output
Sammy the Shark

Se executássemos cat no arquivo vazio ocean.txt, não receberíamos nada em retorno, pois não há texto naquele arquivo. Podemos adicionar texto a este arquivo existente também com echo. Vamos adicionar uma citação de Zora Neale Hurston ao arquivo.

  1. echo "Some people could look at a mud puddle and see an ocean with ships." > ocean.txt

Agora, se executarmos cat no arquivo, receberemos a saída do texto que acabamos de inserir.

  1. cat ocean.txt
Output
Some people could look at a mud puddle and see an ocean with ships.

Até agora, criamos arquivos de texto e adicionamos texto a esses arquivos, mas ainda não modificamos esses arquivos. Se quisermos fazer isso, podemos usar um editor de texto de linha de comando. Existem várias opções populares, incluindo Vim e Emacs. Para nossos propósitos, usaremos o nano, que é um programa de edição de texto CLI menos complexo que podemos usar para iniciar nossa exploração.

O editor de texto nano pode ser chamado com o comando nano. Se quisermos editar nosso arquivo existente sammy.txt, podemos fazer isso passando o nome do arquivo como argumento.

  1. nano sammy.txt

O arquivo será aberto em seu terminal:

sammy.txt
Sammy the Shark

Com as teclas de seta do seu teclado, mova o cursor para o final da linha e comece a digitar algumas linhas do ponto de vista de Sammy.

Nota: Na linha de comando, você não pode usar seu mouse ou outro ponteiro para navegar, tanto pelo sistema de arquivos quanto dentro dos arquivos. Você precisará usar seu teclado e suas teclas de seta em particular para se mover em arquivos textuais.

Quando terminar com seu arquivo, ele pode parecer algo assim:

sammy.txt
Sammy the Shark

Hello, I am Sammy.
I am studying computer science.
Nice to meet you!

Com seu arquivo agora contendo o texto que você deseja, podemos agora salvar e fechar o arquivo. Você pode notar que há algumas orientações na parte inferior da janela do seu terminal:

^G Get Help   ^O WriteOut   ^R Read File  ^Y Prev Page  ^K Cut Text   ^C Cur Pos
^X Exit       ^J Justify    ^W Where Is   ^V Next Page  ^U UnCut Text ^T To Spell

Como já concluímos o trabalho neste arquivo, gostaríamos de sair do arquivo. Aqui, o símbolo ^ refere-se à tecla Control ou CTRL do seu teclado, e a saída acima nos diz que precisamos combinar essa tecla com X (use minúsculas, sem pressionar a tecla SHIFT) para sair do arquivo. Vamos pressionar essas duas teclas juntas:

CTRL x

O acima é frequentemente escrito em linha como CTRL + X ou Ctrl+x na documentação técnica.

Neste ponto, você receberá o seguinte prompt:

Output
Save modified buffer? Y Yes N No ^C Cancel

Para salvá-lo, pressionaremos a letra y para sim:

y

Você receberá um feedback como o seguinte.

Output
File Name to Write: sammy.txt

Há opções adicionais, incluindo o cancelamento com CTRL + C, mas se você estiver confortável em fechar o arquivo, pode pressionar ENTER neste momento para salvar o arquivo e sair dele.

Vamos dizer que queremos criar alguns arquivos de alunos na Universidade DigitalOcean. Vamos criar um novo diretório em files/ chamado students:

  1. mkdir students

Em seguida, vamos mover sammy.txt para o novo diretório students/. O comando mv, que significa move, nos permitirá alterar a localização de um arquivo. O comando é construído tomando o arquivo que queremos mover como primeiro argumento e a nova localização como segundo argumento. Ambas as execuções a seguir produzirão o mesmo resultado.

  1. mv sammy.txt students
  1. mv sammy.txt students/sammy.txt

Esta última opção seria útil se quisermos alterar o nome do arquivo, como em mv sammy.txt students/sammy-the-shark.txt.

Agora, se executarmos o comando ls, veremos que apenas ocean.txt e o diretório students/ estão em nosso diretório atual (files/). Vamos entrar na pasta students/.

  1. cd students

Para ter um modelo para os outros estudantes, podemos copiar o arquivo sammy.txt para criar mais arquivos. Para fazer isso, podemos usar o comando cp, que significa copy. Este comando funciona de forma semelhante ao comando mv, tendo o arquivo original como o primeiro argumento e o novo arquivo como o segundo argumento. Vamos criar um arquivo para Alex, o Leafy Seadragon:

  1. cp sammy.txt alex.txt

Agora, podemos abrir alex.txt e inspecioná-lo.

  1. nano alex.txt

Até agora, alex.txt parece idêntico a sammy.txt. Ao substituir algumas palavras, podemos modificar este arquivo para ficar assim. Note que você pode usar CTRL + K para remover uma linha inteira.

alex.txt
Alex the Leafy Seadragon

Hello, I am Alex.
I am studying oceanography.
Nice to meet you!

Você pode salvar e fechar o arquivo pressionando CTRL + X, depois y e depois ENTER.

Se você deseja praticar mais com arquivos de texto, considere criar arquivos para Jamie, o Mantis Shrimp, Jesse, o Octopus, Drew, o Squid, ou Taylor, o Yellowfin Tuna.

Assim que se sentir confortável em criar, editar, copiar e mover arquivos de texto, podemos avançar para a próxima seção.

Autoconclusão e Histórico

Muitas versões da linha de comando, incluindo o terminal interativo incorporado neste tutorial, permitem que você faça autoconclusão e reutilize comandos conforme avança. Isso ajuda você a se mover mais rapidamente, pois economiza tempo de digitação.

Tente digitar cat junto com as primeiras letras de um dos arquivos de texto em que você esteve trabalhando, por exemplo, cat sa. Antes de terminar de digitar o nome completo do arquivo sammy.txt, pressione a tecla TAB em vez disso. Isso deve completar automaticamente o nome completo do arquivo, de modo que seu prompt do terminal exiba o seguinte:

  1. cat sammy.txt

Agora, se você pressionar ENTER, o terminal deverá retornar o conteúdo do arquivo para a linha de comando.

Outro atalho é pressionar a tecla de seta UP, que permitirá que você percorra os comandos mais recentes que você executou. Em uma nova linha com um cursor piscando, pressione a tecla de seta UP algumas vezes para ter acesso rápido aos seus comandos anteriores.

Se precisar replicar todos os comandos que você fez em seu terminal, você também pode chamar todo o histórico desta sessão com o comando de nome sugestivo history:

  1. history

Dependendo de quanto você praticou, você deve receber 30 ou mais linhas de comandos, começando com a seguinte saída:

Output
1 pwd 2 mkdir files 3 ls 4 ls -l ...

Familiarizar-se com esses atalhos irá ajudá-lo conforme você se torna mais proficiente com a interface de linha de comando.

Trabalhando com Arquivos da Web

Um dos aspectos mais emocionantes de trabalhar em uma interface de linha de comando conectada à internet é que você tem acesso a todos os recursos da web e pode agir sobre eles de maneira automatizada. Com o terminal, você também pode acessar diretamente servidores em nuvem para os quais possui credenciais, gerenciar e orquestrar infraestrutura em nuvem, construir seus próprios aplicativos web e muito mais. Por enquanto, como já aprendemos a trabalhar com arquivos de texto no terminal, vamos aprender como baixar um arquivo de texto da web para que a máquina que estamos usando tenha esse arquivo de texto disponível para nós.

Vamos voltar para o diretório files/:

  1. cd /home/sammy/files

A partir daqui, usaremos o comando curl para transferir dados da web para nosso terminal interativo pessoal no navegador. O comando curl significa cliente URL (endereço da web).

Nós carregamos um pequeno trecho do livro Vinte Mil Léguas Submarinas de Jules Verne em um servidor em nuvem. Passaremos a URL desse arquivo para o comando curl, como demonstrado abaixo.

  1. curl https://assets.digitalocean.com/articles/command-line-intro/verne_twenty-thousand-leagues.txt

Assim que pressionarmos ENTER, receberemos o texto do trecho como saída em nosso terminal (excerto abaixo)

Output
"You like the sea, Captain?" "Yes; I love it! The sea is everything. It covers seven tenths of the terrestrial globe. ... "Captain Nemo," said I to my host, who had just thrown himself on one of the divans, "this is a library which would do honor to more than one of the continental palaces, and I am absolutely astounded when I consider that it can follow you to the bottom of the seas."

Embora seja interessante ter o texto sendo exibido em nossa janela do terminal, não temos o arquivo disponível para nós, apenas transferimos os dados mas não os armazenamos. (Você pode verificar que o arquivo não está lá executando ls).

Para salvar o texto em um arquivo, precisaremos executar curl com a opção -O, que nos permite enviar a saída do texto para um arquivo, usando o mesmo nome do arquivo remoto para nossa cópia local.

  1. curl -O https://assets.digitalocean.com/articles/command-line-intro/verne_twenty-thousand-leagues.txt

Você receberá um feedback do terminal informando que o arquivo foi baixado.

Output
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 2671 100 2671 0 0 68487 0 --:--:-- --:--:-- --:--:-- 68487

Se desejar usar um nome específico e alternativo para o arquivo, você pode fazê-lo com a opção -o e passar o nome do novo arquivo como argumento (neste caso, jules.txt).

  1. curl -o jules.txt https://assets.digitalocean.com/articles/command-line-intro/verne_twenty-thousand-leagues.txt

Agora podemos trabalhar neste arquivo exatamente como faríamos com qualquer outro arquivo de texto. Tente usar cat, ou editá-lo com nano.

Na próxima seção, vamos limpar alguns dos arquivos e sair do nosso terminal.

Removendo Arquivos e Terminando Comandos

Assim como em qualquer outro computador, às vezes precisamos remover arquivos e pastas que não são mais relevantes e sair do programa que estamos usando.

Vamos dizer que os estudantes que conhecemos da Universidade DigitalOcean se formaram e precisamos limpar seus arquivos e a pasta relevante. Certifique-se de estar no diretório students/:

  1. cd /home/sammy/files/students

Se você executar ls, sua pasta pode ter alguns arquivos, assim:

Output
alex.txt drew.txt jamie.txt jesse.txt sammy.txt taylor.txt

Podemos remover arquivos individuais com o comando rm, que significa remover. Precisaremos passar o arquivo que queremos remover como argumento.

Aviso: Note que uma vez que você remove um arquivo, não pode desfazer. Certifique-se de que deseja remover o arquivo antes de pressionar ENTER.

  1. rm sammy.txt

Agora, se executarmos ls, notaremos que sammy.txt não está mais na pasta:

Output
alex.txt drew.txt jamie.txt jesse.txt taylor.txt

Enquanto agora sabemos que podemos remover arquivos individuais com rm, não é muito eficiente em termos de tempo se quisermos remover o diretório students/ inteiro e todo o seu conteúdo.

O comando usado para remover diretórios é chamado rmdir, que significa remover diretório. Vamos mudar para a pasta pai de files para que possamos trabalhar com o diretório students/ de lá (não podemos excluir uma pasta em que estamos atualmente).

  1. cd ..

A partir do diretório do usuário /home/sammy/, podemos executar rmdir em students.

  1. rmdir students

No entanto, isso não funciona, pois recebemos o seguinte feedback:

Output
rmdir: failed to remove 'students': Directory not empty

O comando não funcionou, pois rmdir só funciona em diretórios vazios e o diretório students ainda possui arquivos nele. (Aqui, você pode criar uma nova pasta vazia e tentar rmdir nela. Pastas vazias podem ser removidas com rmdir.)

Para remover o diretório com arquivos ainda dentro, precisaremos tentar uma opção diferente. Na ciência da computação, a recursão é comumente usada para se auto-referenciar de forma iterativa; assim podemos chamar tanto um item primário quanto todas as suas dependências. Usando o comando rm, podemos remover recursivamente o diretório primário students e todas as suas dependências de conteúdo. Vamos usar a opção -r, que significa recursiva, e passar a pasta students como argumento.

  1. rm -r students

Neste ponto, se executarmos ls, vamos notar que students/ não está mais no nosso diretório atual, e nenhum dos arquivos que ele continha está disponível também, pois todos foram excluídos.

Quando terminar uma sessão no terminal, especialmente quando estiver trabalhando em um servidor remoto, você pode sair do terminal com o comando exit. Uma vez que se sinta confortável com o que alcançou nesta sessão (pois não poderá restaurá-lo), você pode digitar o seguinte, seguido por ENTER para sair do terminal.

  1. exit

Em nosso terminal interativo, receberemos a seguinte saída, confirmando que nossa sessão terminou.

Output
Session ended

Com esta sessão concluída, você pode atualizar esta página e então abrir um novo terminal para experimentar comandos alternativos, ou criar um novo sistema de arquivos para explorar.

Conclusão

Parabéns! Agora você conhece o caminho ao redor da interface do terminal e está bem encaminhado para fazer mais com computadores e servidores.

Para continuar seu aprendizado, você pode seguir um caminho guiado na configuração e gerenciamento de servidores remotos com nosso currículo de Introdução à Computação em Nuvem.

Source:
https://www.digitalocean.com/community/tutorials/a-linux-command-line-primer