Introdução
Nota: O terminal interativo neste tutorial está atualmente desativado enquanto trabalhamos na melhoria de nossas experiências de aprendizado interativo. Você ainda pode usar este tutorial para aprender sobre a linha de comando e praticar comandos do 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 têm interfaces gráficas de usuário (também chamadas de GUIs), permitindo-nos navegar por aplicativos, a web e nossos arquivos (como documentos e fotos) por meio de uma experiência visual. Os sistemas operacionais Windows, macOS e Linux apresentam variedades de um 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 maneira intuitiva de usar um computador para muitos usuários, muitas vezes elas não nos proporcionam 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 não são tão acessíveis quanto poderiam ser para todos os usuários.
Uma maneira de navegar tanto pelo seu próprio computador pessoal quanto por servidores de nuvem remotos sem uma GUI é por meio de um terminal baseado em texto ou interface de linha de comando (CLI).
As interfaces de terminal existem em praticamente todos os sistemas operacionais de computador, e emuladores de terminal também estão disponíveis como aplicativos para tablets e smartphones. Os terminais fornecem aos usuários um acesso geral maior às suas máquinas através de um aumento do acesso administrativo, maior capacidade de personalização dos ambientes e oportunidades para automatizar processos. Eles também oferecem aos usuários a capacidade de acessar computadores remotos, como servidores em nuvem.
Este tutorial fornecerá aos usuários que são novos em ambientes de terminal o básico sobre 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. Depois de concluir este tutorial, você deverá ter uma compreensão de como usar um terminal em um computador ou servidor Linux (ou macOS).
Entendendo a Janela do Terminal
Quando você obtém 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 as coisas estão para poder personalizar o dispositivo conforme suas necessidades. Você pode se familiarizar com um computador através de um terminal de forma semelhante.
O terminal interativo que você lançou nesta janela do navegador, clicando no botão Lançar um Terminal Interativo!
acima, exibe um retângulo branco na parte inferior da janela do seu navegador:
Se você ainda não lançou 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 é onde você começará a digitar comandos para dizer ao terminal o que fazer.
O terminal que você lançou é 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 no Unix. Se você está lendo este tutorial em uma máquina Linux ou macOS, você deve ter um terminal no seu sistema operacional que funcione de maneira 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 #
, o que significa o seguinte:
$
ou cifrão — você está logado como um usuário regular#
ou símbolo de hashtag/cerquilha — você está logado como um usuário com privilégios elevados
O usuário que é observado no ambiente #
também é conhecido como usuário root, que é considerado um superusuário, ou administrador, por padrão.
Para nossos propósitos dentro do terminal do navegador abaixo, você está logado como um usuário regular, 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 vamos destruir tudo assim que terminarmos. Da mesma forma, com um servidor em nuvem, é possível destruir um servidor e começar do zero se algo der errado.
Por favor, note 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 alterações permanentes no computador que está utilizando.
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.
Se Familiarizando 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 deseja que o computador faça. Você irá digitar seus comandos no terminal e em seguida pressionar ENTER
ou RETURN
quando estiver pronto para o computador executar um determinado comando.
Digite o seguinte comando seguido de ENTER
. Você também pode copiar o comando ou solicitá-lo para ser executado em um terminal interativo já iniciado clicando nos links relevantes no bloco de código abaixo quando você passar o mouse sobre ele.
Após executar este comando, você receberá a seguinte saída:
Output/home/sammy
O comando pwd
significa “present working directory” e indica onde você está dentro do sistema de arquivos atual.
Neste exemplo, você está no diretório (ou pasta) chamado /home/sammy
, que corresponde ao usuário chamado sammy
. Se estiver logado 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 é proprietário 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, usaremos o comando mkdir
, que significa “make diretório”. Após digitarmos o comando, precisaremos escrever o nome da pasta, que passará o valor para o comando para que o comando possa executar a criação deste diretório. Este valor (o nome da pasta) é conhecido como um argumento, que é uma entrada fornecida ao comando. Se você está familiarizado com a gramática da linguagem natural, pode pensar no argumento como um objeto que está sendo atuado pelo verbo do comando.
Para criar um novo diretório chamado files
, escreveremos o seguinte, com mkdir
sendo o comando e files
sendo o argumento:
Depois de executar este comando, você não receberá nenhuma saída além de uma nova linha com um cursor piscando. Com esta nova linha no seu terminal, você está pronto para o seu próximo comando.
Listagem de Conteúdos e Compreensão de Permissões
Como ainda não recebemos nenhum feedback concreto sobre nosso novo diretório, usaremos um comando para aprender mais sobre o que está em 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 “list”).
Você receberá uma saída que confirma que o diretório files
está presente:
Outputfiles
Isso nos fornece informações gerais sobre o que está no nosso diretório de trabalho atual. Se quisermos ter mais detalhes, podemos executar o comando ls
com o que é chamado de um sinalizador. Em comandos Linux, um sinalizador é escrito com um hífen -
e letras, passando opções adicionais (e mais argumentos) para o comando. No nosso exemplo, vamos adicionar o sinalizador -l
, que — quando combinado com ls
— denota que gostaríamos de usar a opção para usar um formato de lista longa com nosso comando.
Vamos digitar este comando e sinalizador, assim:
Ao pressionar ENTER
, receberemos a seguinte saída no nosso terminal:
Outputtotal 4
drwxr-xr-x 2 sammy sammy 4096 Nov 13 18:06 files
Aqui, há duas linhas de saída. A primeira linha refere-se a blocos de memória do computador sendo alocados para este diretório, a segunda linha refere-se principalmente a permissões de usuário no arquivo.
Para obter uma saída um pouco mais legível para humanos, também podemos passar o sinalizador -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 por extenso em palavras. Note que algumas opções podem usar ambos os formatos. Podemos construir várias opções em um comando encadeando sinalizadores juntos, como em -lh
.
Por exemplo, os dois comandos abaixo entregam os mesmos resultados mesmo que sejam escritos de forma diferente:
Ambos esses comandos retornarão a seguinte saída, semelhante à saída acima, mas com mais contexto dos blocos de memória:
Outputtotal 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 tem muito mais detalhes, que vamos analisar com mais detalhes. Uma referência geral de alto nível de todas as informações que vamos 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ê observará 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 analisar 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 |
Nas primeiras letras drwx
da string, a primeira letra d
significa que o item files
é um diretório. Se este fosse um arquivo que não fosse 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 leido, escrito e executado pelo proprietário do arquivo. Se algum destes caracteres fosse substituído por hífens, isso significaria que o proprietário não tem o tipo de permissão representado por esse caractere. Discutiremos como identificar o proprietário de um arquivo em apenas um momento.
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ão de escrita, pois o w
é substituído por um -
. Discutiremos como identificar o grupo em apenas um momento.
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 no 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 navegassem ao longo de um caminho relativo. Discutiremos 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 o grupo associado 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 como rwx
. O usuário sammy
é o proprietário, pois criamos o diretório files
como 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 semelhantes ao Unix frequentemente têm mais de um usuário, então é útil saber qual usuário tem a propriedade 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 como 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 nesta linha de saída são os 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, apenas o criamos).
Com esta maior compreensão dos sistemas de arquivos e permissões, podemos avançar para a navegação no sistema de arquivos em nosso terminal Linux.
Navegando no Sistema de Arquivos
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 agora aprender 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 “mudar de diretório”, e o construiremos assim:
Novamente, você não receberá nenhuma saída além de uma nova linha com um cursor piscando, mas podemos verificar que estamos no diretório /home/sammy/files
com o comando pwd
que usamos anteriormente:
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
. Esta sintaxe lhe parece familiar? Pode lembrar-lhe a URL de um site com suas barras inclinadas, e, de fato, os sites também são estruturados em servidores dentro de diretórios.
Vamos mover para o diretório principal do servidor. Independentemente de onde estivermos em um sistema de arquivos, sempre podemos usar o comando cd /
para mover para o diretório principal:
Para confirmar que nos movemos e aprender o que está neste diretório, vamos executar nosso comando de listagem:
Receberemos a seguinte saída:
Outputbin 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 o diretório “raiz”. 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 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 então para files
, ou podemos nos mover diretamente de volta para essa pasta digitando o caminho absoluto com cd
:
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, assim:
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 com o qual é bom se familiarizar é ~
, que representa o diretório inicial da 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 o 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:
Neste ponto, sinta-se à vontade para navegar pelo seu 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 navegar 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 de usuário /home/sammy
, o que podemos fazer verificando com pwd
, ou alterando os diretórios no caminho absoluto:
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 por texto não formatado. Texto não formatado, incluindo o texto em arquivos .txt
, pode ser facilmente usado na linha de comando e, portanto, pode ser usado ao trabalhar com dados textuais de forma programática (para automatizar análises de texto, 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.
Depois de pressionar ENTER
, você receberá uma nova linha do prompt de comando e poderá listar o conteúdo atual de files/
para garantir que tenha sido criado.
Outputocean.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 cadeias de texto no Linux.
Podemos usar echo
diretamente na linha de comando para fazer a interface repetir após nós. O primeiro programa tradicional, "Olá, Mundo!"
, pode ser escrito com echo
assim:
OutputHello, World!
Nomeado em homenagem a Eco de Ovídio em Metamorfoses, 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:
O comando acima usa echo
, em seguida, o texto que gostaríamos de adicionar ao nosso arquivo entre aspas, depois 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
.
Outputocean.txt sammy.txt
Agora temos dois arquivos de texto em nossa pasta de usuário /home/sammy/files
. Em seguida, podemos confirmar se o arquivo sammy.txt
contém o texto que pedimos para o terminal ecoar nele. 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.
Depois de executarmos o comando, receberemos a seguinte saída:
OutputSammy the Shark
Se executássemos cat
no arquivo vazio ocean.txt
, não receberíamos nada em retorno, pois não há texto nesse arquivo. Também podemos adicionar texto a este arquivo existente com echo
. Vamos adicionar uma citação de Zora Neale Hurston ao arquivo.
Agora, se executarmos cat
no arquivo, receberemos a saída do texto que acabamos de inserir.
OutputSome 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 os modificamos. 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 sammy.txt
existente, podemos fazer isso passando o nome do arquivo como argumento.
O arquivo será aberto no seu terminal:
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.
Observação: Na linha de comando, você não pode usar o mouse ou outro ponteiro para navegar, tanto no sistema de arquivos quanto nos arquivos. Você precisará usar seu teclado e, em particular, suas teclas de seta, para se mover em arquivos de texto.
Quando terminar com seu arquivo, ele pode se parecer com isto:
Sammy the Shark
Hello, I am Sammy.
I am studying computer science.
Nice to meet you!
Com seu arquivo agora contendo o texto que deseja, podemos agora salvar e fechar o arquivo. Você pode notar que há alguma orientação 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
Porque já terminamos de trabalhar neste arquivo, gostaríamos de sair do arquivo. Aqui, o símbolo ^ refere-se à tecla Control ou CTRL no 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 inline como CTRL + X
ou Ctrl+x
em documentação técnica.
Neste ponto, você receberá o seguinte prompt:
OutputSave modified buffer?
Y Yes
N No ^C Cancel
Para salvá-lo, vamos pressionar a letra y
para sim:
y
Você receberá feedback como o seguinte.
OutputFile Name to Write: sammy.txt
Existem opções adicionais, incluindo cancelar com CTRL + C
, mas se você estiver confortável com o fechamento do arquivo, pode pressionar ENTER
neste ponto para salvar o arquivo e sair dele.
Digamos que queremos fazer alguns arquivos de alunos na Universidade DigitalOcean. Vamos criar um novo diretório em files/
chamado students
:
Em seguida, vamos mover sammy.txt
para o novo diretório students/
. O comando mv
, que significa mover, 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.
Esta última opção seria útil se quisermos mudar 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/
.
Para ter um modelo para os outros alunos, podemos copiar o arquivo sammy.txt
para criar mais arquivos. Para fazer isso, podemos usar o comando cp
, que significa copiar. Este comando funciona de forma semelhante ao comando mv
, levando o arquivo original como o primeiro argumento e o novo arquivo como o segundo argumento. Vamos fazer um arquivo para Alex, o Leafy Seadragon:
Agora, podemos abrir alex.txt
e inspecioná-lo.
Até agora, alex.txt
parece idêntico a sammy.txt
. Substituindo algumas palavras, podemos modificar este arquivo para ler como o seguinte. Note que você pode usar CTRL + K
para remover uma linha inteira.
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ê gostaria de 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 com a criação, edição, cópia e movimentação de arquivos de texto, podemos passar para a próxima seção.
Autocompletar e Histórico
Muitas versões da linha de comando, incluindo o terminal interativo incorporado neste tutorial, permitem que você autocomplete e reutilize comandos conforme avança. Isso ajuda você a se mover mais rapidamente, pois economiza tempo de digitação.
Tente digitar cat
juntamente 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 autocompletar o nome completo do arquivo, de modo que seu prompt de terminal exiba o seguinte:
Agora, se você pressionar ENTER
, o terminal deve retornar o conteúdo do arquivo para a linha de comando.
Outro atalho é pressionar a tecla de seta para cima UP
, que permitirá que você navegue pelos comandos mais recentes que você executou. Em uma nova linha com um cursor piscando, pressione a tecla de seta para cima UP
algumas vezes para ter acesso rápido aos seus comandos anteriores.
Se você precisar replicar todos os comandos que realizou em seu terminal, também pode convocar todo o histórico desta sessão com o comando apropriadamente chamado 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á apoiá-lo à medida que 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 na web e pode agir sobre eles de forma 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/
:
A partir daqui, vamos usar o comando curl
para transferir dados da web para nosso terminal interativo pessoal no navegador. O comando curl
significa cliente de URL (endereço web).
Nós carregamos um pequeno trecho de Vinte Mil Léguas Submarinas de Jules Verne em um servidor em nuvem. Vamos passar o URL desse arquivo para o comando curl
, conforme demonstrado abaixo.
Assim que pressionarmos ENTER
, receberemos o texto do trecho como saída em nosso terminal (trecho 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 exibido em nossa janela de 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 flag -O
, que nos permite enviar o texto para um arquivo, mantendo o mesmo nome do arquivo remoto para nossa cópia local.
Você receberá um retorno do terminal informando que seu 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 você deseja usar um nome específico e alternativo para o arquivo, pode fazê-lo com a flag -o
e passar o nome do novo arquivo como argumento (neste caso, jules.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 Encerrando Comandos
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 supor que os alunos que conhecemos da Universidade DigitalOcean se formaram e precisamos limpar seus arquivos e a pasta relevante. Certifique-se de estar no diretório students/
:
Se você executar ls
, sua pasta pode ter alguns arquivos, assim:
Outputalex.txt drew.txt jamie.txt jesse.txt sammy.txt taylor.txt
Pode 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 ser desfeito. Tenha certeza de que quer remover o arquivo antes de pressionar ENTER
.
Agora, se executarmos ls
, vamos notar que sammy.txt
não está mais na pasta:
Outputalex.txt drew.txt jamie.txt jesse.txt taylor.txt
Embora agora saibamos que podemos remover arquivos individuais com rm
, não é muito eficiente em termos de tempo se quisermos remover o diretório inteiro students/
e todos os seus conteúdos.
O comando usado para remover diretórios é chamado de rmdir
, que significa remover diretório. Vamos mudar para a pasta pai de files
para que possamos trabalhar com o diretório students/
a partir daí (não podemos excluir uma pasta na qual estamos atualmente).
A partir do diretório do usuário /home/sammy/
, podemos executar rmdir
em students
.
No entanto, isso não funciona, pois recebemos o seguinte feedback:
Outputrmdir: 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 tem 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, recursão é comumente usada para fazer referência a si mesma 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 recursivo, e passar a pasta students
como argumento.
Neste ponto, se executarmos ls
, perceberemos que students/
não está mais em nosso diretório atual, e nenhum dos arquivos que continha está disponível, pois todos foram excluídos.
Quando você terminar uma sessão no terminal, e 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 realizou nesta sessão (pois não poderá restaurá-lo), você pode digitar o seguinte, seguido de ENTER
para sair do terminal.
Em nosso terminal interativo, receberemos a seguinte saída, confirmando que nossa sessão terminou.
OutputSession ended
Com esta sessão concluída, você pode atualizar esta página e então iniciar um novo terminal para experimentar comandos alternativos, ou criar um novo sistema de arquivos para explorar.
Conclusão
Parabéns! Agora você sabe como navegar na interface do terminal e está bem encaminhado para fazer mais com computadores e servidores.
Para continuar seu aprendizado, você pode seguir um caminho guiado sobre como configurar e gerenciar 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