Skip to content

bellorini/tutorial_bash_nv01

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Tutorial Bash - nível iniciante

Tux, the Linux penguin

Introdução

Este tutorial é um jogo caça-letras para ajudar usuários iniciantes em Linux a se familiarizarem com a Command Line Interface (CLI), ou shell, mais especificamente com o bash, um interpretador de comandos shell.

Este tutorial é uma adaptação do tutorial bash_tutorial de Kristian Rother.

Para quem é este tutorial?

Para todos que tem pouca ou nenhuma experiência com o bash

O que você alcançará ao completar este tutorial?

Conhecimento sobre comandos para:

  • Navegar entre diretórios
  • Criar e manipular arquivos de texto
  • Baixar arquivos da internet
  • Compactar e descompactar arquivos
  • Executar scripts
  • Argumentos e parâmetros dos comandos

Pré-requesitos

Este tutorial foi elaborado e implementado em uma Distribuição Linux baseado em Debian. Desta forma, espera-se que qualquer distribuição baseada em Debian seja o suficiente para completá-lo.

Objetivo

Você deverá encontrar os 23 caracteres escondidos neste repositório utilizando vários comandos shell. Estes caracteres formam uma frase com duas palavras e um espaço em branco entre elas.

disposição dos 23 caracteres

Preparação inicial

Em uma máquina com uma distribuição Linux, abra o terminal. Muito provavelmente você estará no diretório de trabalho chamado de home do usuário, indicado pela linha:

<usuário>@<máquina>:~$

O termo <usuário> é o nome do usuário logado no momento. Em computadores de escolas, normalmente os técnicos de informática escolhem aluno, usuário ou qualquer outro nome genérico, mas se você estiver em um computador seu ou da sua família, este nome deve ser um nome reconhecido por você.

Na sequência, o termo <máquina> é o nome do computador que você está usando, podendo ser nomes bem variados e criativos.

Para a coerência deste jogo, toda vez que for necessário apresentar a linha de comando completa, será usado estes dois termos genéricos <usuário> e <máquina>.

para garantir que você está no diretório home do usuário entre com o seu primeiro comando:
Observação 1: para executar um comando, digite-o e pressione ENTER

usuário@máquina:~$ pwd # pressione ENTER

Deverá ser apresentado a seguinte resposta:

/home/usuário

Observação 2: em alguns momento será necessário adicionar um ou outro comentário, desta forma, o caractere # será utilizado, portanto, tudo o que estiver à direita do # é um comentário e não deve ser entrado no terminal. Um exemplo de uso de comentário é observado acima, junto ao comando pwd

Observação 3: em casos onde não é necessário apresentar a linha de comando completa, todas as informações entre o início da linha de comando até o caractere "$" serão ocultados, por exemplo:

$ pwd 

Obsevação 4: espaço em branco é muito importante no terminal, já que este é considerado um separador de campos. Assim, deve-se sempre inserir um espaço em branco entre o comando e seus parâmetros e argumentos

Após verificado estas condições inicias, vamos começar nossa caçada às letras.


1. Baixar arquivo da internet e Descompactá-lo

1.1 Baixar o arquivo tutorial_bash_nv01.zip

Vamos baixar a estrutura de diretórios e arquivos deste repositório utilizando o comando wget.
Este comando é um downloader que aceita como argumento uma URI. Neste caso, como desejamos baixar a estrutura de diretórios do nosso repositório, usaremos a URI do arquivo compactado como este argumento. Desta forma, no terminal, entre com o seguinte comando:

wget https://github.com/bellorini/tutorial_bash_nv01/archive/refs/heads/tutorial_bash_nv01.zip

TODO, apresentar texto de completado após completar a construção deste tutorial

O arquivo baixado chama-se tutorial_bash_nv01.zip. Para verificar se este arquivo foi baixado, use o comando ls.
Este comando lista o conteúdo de um diretório.

usuário@máquina:~$ ls

É possível que apareçam muitos outros arquivos, porém, o arquivo tutorial_bash_nv01.zip deve estar presente.

1.2 Descompactar o arquivo tutorial_bash_nv01.zip

O arquivo baixado está no formato zip. Estes arquivos agrupam (empacotam) e compactam outros arquivos.

O comando unzip é utilizado para, entre outras coisas, listar o conteúdo de um arquivo compactado e descompactar este pacote.
Inicialmente, vamos listar o conteúdo do pacote tutorial_bash_nv01.zip com a seguinte linha de comando:

usuário@máquina:~$ unzip -l tutorial_bash_nv01.zip

Será apresentado uma tabela com uma estrutura de diretórios e arquivos, contendo tamanho, data e nome.

A partir deste momento, o dispositivo mouse não deve ser mais necessário, desta forma, mãos ao teclado!
teclado sim, mouse não

Observe que o comando unzip recebeu um parâmetro -l e um argumento tutorial_bash_nv01.zip. Mas o que são argumentos e parâmetros?

  • argumento(s) são modificadores do comando que alteram a funcionalidade deste. No nosso exemplo, o comando unzip apenas lista o conteúdo do pacote sem qualquer outro resultado, como descompactar ou alterá-lo.
  • parâmetro(s) são modificadores do comando que indicam os objetos de entrada e/ou saída da funcionalidade executada. Neste caso, o pacote tutorial_bash_nv01.zip é o nosso objeto que será listado.

Agora, para descompactar o pacote tutorial_bash_nv01.zip basta entrar com o comando:

usuário@máquina:~$ unzip tutorial_bash_nv01.zip

Deverá ser criado um novo diretório chamado tutorial_bash_nv01-tutorial_bash_nv01 dentro do seu diretório home. Para verificar, vamos usar o comando ls já conhecido, porém adicionando o argumento tutorial_ e pressione a tecla TAB para autocompletar (o terminal é esperto o suficiente para autocompletar)

usuário@máquina:~$ ls tutorial_ #TAB (autocompleta com "bash_nv01")
# resultado após pressionar TAB: 
usuário@máquina:~$ ls tutorial_bash_nv01-tutorial_bash_nv01

2. Diretórios e Arquivos

Rumo ao primeiro caractere!
Recomenda-se ir anotando os caracteres encontrados.

2.1 Alterar o diretório atual de trabalho e listar arquivos

DICA: o caractere 01 pode ser encontrado no nome de um arquivo em algum lugar do diretório "exercícios/exercício02"

Para navegar entre diretórios e acessar diretórios abaixo na hierarquia, também chamados de diretórios filhos ou subdiretórios, utilize o comando cd com o argumento nome do diretório de destino

usuário@máquina:~$ cd # insira o diretório de destino e pressione ENTER

Como resultado, o diretório atual de trabalho será o diretório escolhido e a linha de comando será alterada para

usuário@máquina:~/nome_do_diretório_de_destino$ 

Para voltar ao diretório acima na hierarquia, também chamado de diretório pai, use o comando cd, porém, como argumento nome do diretório de destino, utilize ".." (dois pontos em sequência).

usuário@máquina:~/algum_diretório$ cd ..

Como resultado, você alterará o diretório atual de trabalho para o diretório pai do seu diretório atual.

Navegue entre os diretórios filhos do diretório exercício02 até encontrar o arquivo que contém no nome o caractere escondido.

2.2 Listar arquivos ocultos

DICA: o caractere 02 pode ser encontrado no nome de um arquivo oculto e em algum lugar do diretório "exercícios/exercício02"

Arquivos ocultos no Linux são aqueles cujo nome iniciam com um caractere "." (ponto)

Para listar arquivos ocultos, basta utilizar o parâmetro -a no comando ls

usuário@máquina:~$ ls -a

Como resultado, serão apresentados os arquivos ocultos junto com os arquivos "normais". Normalmente, dentro de cada diretório, encontram-se os diretórios ocultos "." e ".."

  • diretório ".": é uma ligação/ponteiro para o próprio diretório, útil para desambiguação entre comandos locais e globais
  • diretório "..": é uma ligação/ponteiro para o diretório pai e já foi usado junto com o comando cd na seção 2.1

2.3 Executando um script

DICA: o caractere 03 será exibido no terminal ao executar o script chamado "um_script.sh" existente em algum subdiretório do diretório exercícios/exercício02/

Um arquivo script é um arquivo que contém um ou vários comandos shell em uma sequência lógica de execução. Estes arquivos são extremamente úteis para tornar ações rotineiras em scripts automáticos.

Uma das formas mais simples de executar um arquivo script é utilizar o comando source com o argumento sendo o nome do arquivo que contém o script desejado.

usuário@máquina:~$ source #nome do arquivo que contém o script, normalmente terminal em .sh

IMPORTANTE: scripts da internet podem ser perigosos, sempre certifique-se que a origem do script é segura antes de executá-lo e nunca, jamais, big nop, execute linhas de comando copiadas da internet sem ter um pouco de conhecimento sobre o que estas executam, pois você pode executar algo malicioso.

Linha de comando e scripts são ferramentas poderosas que são utilizadas para o bem e também para o mal!

2.4 Descobrindo o tamanho de um arquivo com ls

DICA: o caractere 04 é o caractere ASCII apontado pelo tamanho do arquivo "exercícios/exercício02/qual_é_meu_tamanho_em_bytes.txt"

Até o momento, o comando ls foi usado de forma pura, sem parâmetros ou argumentos. Porém, este comando pode fazer muitas coisas, e uma delas é mostrar várias informações de arquivos ou um arquivo específico. Estas informações estão relacionadas na forma de uma tabela com as seguintes informações (da esquerda para direita):

  • se é um arquivo ou diretório
  • permissões de acesso ao arquivo (dono/grupo/outros)
  • quem é o dono do arquivo
  • qual é o grupo que o arquivo pertence
  • tamanho do arquivo em bytes
  • timestamp
  • nome do arquivo

Então, para mostrar todas estas informações, use o comando ls com o parâmetro -l no diretório especificado na Dica acima.

usuário@máquina:~/tutorial_bash_nv01$ ls -l exercícios/exercício02/

Após descobrir o tamanho do arquivo "qual_é_meu_tamanho_em_bytes.txt", use a tabela ASCII e relacione o tamanho do arquivo com a coluna DEC e o caractere 04 é o glifo associado à este valor.

3. Visualizar e editar arquivos de texto

Volte para o diretório principal localizado em "/home/usuário/tutorial_bash_nv01/" e acesse o diretório "exercícios/exercício03/"

3.1 Visualizar o conteúdo de um arquivo de texto

DICA: o caractere 05 está dentro do arquivo "exercício03/o_quinto_caractere_está_aqui.txt"

Para exibir o conteúdo de um arquivo de texto, use o comando less com o arquivo desejado como argumento:

$ less o_quinto_caractere_está_aqui.txt

Como resultado, será exibido uma tela contendo o conteúdo do arquivo uma página de cada vez. O comando less permite navegar no texto utilizando as setas de movimentação cima e baixo do teclado. Porém, o arquivo é pequeno e não é necessário tal ação.

Após anotar o caractere 05, use a tecla Q para encerrar o comando less

3.2 Editar um arquivo de texto com programa "nano"

Para encontrar o caractere 06, crie um arquivo de texto contendo os cinco caracteres já encontrados. Para criar e editar um arquivo de texto, use o programa nano. Estando no diretório "exercício03" entre com o seguinte comando:

$ nano caractere06.txt

Entre com os caracteres encontrados e use as teclas de atalhos CTRL+X. Será perguntado se você deseja salvar o arquivo, responda de forma afirmativa com o caractere "S" ou "Y" (em inglês). Logo, será perguntado qual é o nome do arquivo, que já estará preenchido, bastando pressionar ENTER.

DICA: o caractere 06 é o caractere que foi pressionado para afirmar o salvamento do arquivo (em inglês)

4. Criar diretório, copiar e remover arquivos

Volte para o diretório principal localizado em "/home/usuário/tutorial_bash_nv01/" e acesse o diretório "exercícios/exercício04/"

4.1 Criar um diretório

Liste o conteúdo do diretório "exercício04". Este diretório deve conter 2 subdiretório chamados "solução_parte_01" e "solução_parte_02". Dentro de cada um destes diretórios existe um arquivo de texto.

Crie um subdiretório chamado "solução_completa" dentro deste diretório "exercício04" com o comando mkdir. O comando mkdir, de make directory aceita um ou mais argumentos, separados com espaço em branco, sendo que cada argumento é o nome do subdiretório que deve ser criado. No caso, basta criar apenas um único diretório.

$ mkdir solução_completa

Liste novamente o conteúdo do diretório "exercício04" para confirmar a criação deste diretório "solução_completa"

4.2 Copiar arquivos

Para encontrar a próxima solução, será necessário copiar os arquivos dos subdiretórios "solução_parte_01" e "solução_parte_02" para o subdiretório criado "solução_completa". Para tal, use o comando cp, que aceita dois argumentos:

  • primeiro argumento: é o arquivo de origem que será copiado
  • segundo argumento: é o local de destino da cópia

Desta forma, para completar a ação de copiar, identifique os nomes dos arquivos dos subdiretórios e execute 2x o comando cp

$ cp solução_parte_01/#_arquivo_de_origem solução_completa/

e

$ cp solução_parte_02/#_arquivo_de_origem solução_completa/

DICA: os caractere 07 e caractere 08 estão marcados entre os dois arquivos copiados para o subdiretório "solução_completa". Você deve listá-los com o comando ls -l e o segundo arquivo marca com caractere "+" o caractere que será usado como solução no primeiro arquivo, respectivamente como 07 e 08.

4.3 Removendo arquivos

No subdiretório "dados" encontram-se vários arquivos com nomes padronizados. Dois destes arquivos não contém o caractere "Y" em seus nomes. Você deve remover todos os arquivos que contém "Y".

DICA: os caracteres 09 e 10 são os caracteres diferente de "X" nos nomes dos dois arquivos que sobrarem após a remoção de todos os arquivos que contém "Y" em seu nome do subdiretório "dados"

Para remover um arquivo, use o comando rm seguido do argumento nome_do_arquivo_a_ser_excluído.

$ rm # insira o nome_do_arquivo_a_ser_excluído

Outra dica é o caractere curinga * que pode ser usado no terminal. Este caracteres significa "qualquer combinação de caracteres nesta posição", isto é, se você usar a seguinte linha de comando:

$ rm *Y

Como resultado, removerá TODOS os arquivos que contém qualquer combinação de caracteres e são finalizados com o caractere "Y". Você pode aplicar mais do que um caractere curinga * nas linhas de comando.

IMPORTANTE: o caractere curinga é muito poderoso e deve ser usado com cautela. Em Linux, não é possível recuperar um arquivo apagado pelo comando rm.

5. Processamento básico de textos

Volte para o diretório principal localizado em "/home/usuário/tutorial_bash_nv01/" e acesse o diretório "exercícios/exercício05/"

5.1 Comparando arquivos de texto

Dica: o caractere 11 é o único caractere que é diferente entre os arquivos "ai.txt" e "inteligencia_artificial.txt"

Para comparar 2 arquivos de texto, o comando diff é utilizado. Este comando diff aceita 2 argumentos que são os arquivos que se deseja comparar.

$ diff #arquivo1 #arquivo2

Como resultado, será apresentado todas as linhas que diferem entre os arquivos adicionados como argumento.
Caso queira, e é altamente recomendado, leia o conteúdo do arquivo com less ou nano.

5.2 Verificando se você está prestando atenção neste jogo

Dica: o caractere 12 é o caractere separador de parâmetros e argumentos no interpretador "shell"

5.3 Ordenando alfabeticamente as linhas de um arquivo de texto

O interpretador shell contém um comando para ordenar as linhas de um arquivo, chamado sort. Este comando recebe como argumento um arquivo e resulta, no próprio terminal, as linhas ordenadas alfabeticamente de forma crescente

Dica: o caractere 13 é o primeiro caractere da última palavra da primeira linha do arquivo "elefante.txt" ordenado

Para executar a ordenação em um arquivo, use a seguinte linha de comando:

$ sort #arquivo1 

Não esqueça de verificar o arquivo original e comparar com o que foi apresentado pelo sort

5.3 Encontrando palavras dentro de um arquivo de texto

Em algumas ocasiões, você poderá se deparar com a necessidade de procurar algo dentro de um arquivo de texto muito grande. No lugar de abrir o arquivo e o lê-lo por completo, é possível pedir ao comando grep para localizar uma palavra que pertença a linha procurada.

$ grep #palavra_procurada #arquivo

O resultado será uma lista de linhas pertencentes ao arquivo que contém a palavra procurada nestas.

Dica: o caractere 14 está dentro do arquivo "memorias_enterradas_na_areia.txt". Mais precisamente, é o primeiro caractere da única linha que contém a palavra "happened"

6. Encontrar arquivos

Volte para o diretório principal localizado em "/home/usuário/tutorial_bash_nv01/"

6.1 Encontrar arquivos case-sensitive

Dica: o caractere 15 está na última linha do arquivo que contém o termo "Pascal" em seu nome. Este arquivo está localizado em algum lugar dos subdiretórios de "tutorial_bash_nv01"

IMPORTANTE: o nome do arquivo procurado não é somente "Pascal", mas contém "Pascal", desta forma, vale lembrar do uso do caractere curinga * observado no item 4.3

Para procurar um arquivo pelo nome, utilize o comando find com o parâmetro -name "nome_desejado"

$ find -name #insira aqui o nome desejado entre áspas duplas após o espaço em branco

Após encontrar o arquivo, liste as últimas linhas deste arquivo com o comando tail

$ tail #nome do arquivo desejado

6.2 Encontrar arquivos non-case-sensitive

O comando find contém um parâmetro diferente de -name para casos onde caracteres maiúsculo ou minúsculos não são conhecidos, este parâmetro é o -iname.

$ find -iname #insira aqui o nome desejado entre áspas duplas após o espaço em branco

Dica: o caractere 16 está localizado no nome de um arquivo oculto que contém o texto "a2"

7. Lendo manual dos comandos

A grande maioria dos comandos contém um manual acessado por man

$ man #comando que se deseja conhecer mais

7.1 Conferindo a quantidade de memória RAM disponível

Dica: o caractere 17 é o parâmetro utilizado para mostrar a quantidade de memória livre em formato Gibibytes.

Para verificar a quantidade de memória RAM disponível no computador em uso, use o comando free

$ free # opcionalmente, pode ser usado parâmetro para modificar a apresentação dos valores

8. Compactando e descompactando arquivos

Volte para o diretório principal localizado em "/home/usuário/tutorial_bash_nv01/" e acesse o diretório "exercícios/exercício08/"

8.1 Listar arquivo .zip

Você ainda lembra como listar e descompactar arquivos compactados no formato .zip?

Dica: o caractere 18 está indicado no nome do arquivo compactado dentro do pacote "caracteres_18_e_19_estão_aqui.zip"

8.2 Descompactar arquivos .zip

Dica: o caractere 19 está no conteúdo do arquivo compactado dentro do pacote "caracteres_18_e_19_estão_aqui.zip"

8.3 Descompactar arquivos .tar.gz

É comum encontrar arquivos no formato .tar.gz em Sistemas Operacionais baseados em Linux. Na verdade, .tar.gz são dois formatos de arquivos. O formato .tar, também chamado de tarball é usado para unir vários arquivos em um único arquivo, algo muito semelhante aos pacotes .zip, porém, sem a compactação. Já o formato .gz, de GNU zip, é utilizado para compactar. Desta forma, o tarball empacota arquivos, e o GNU zip compacta-os.

Dica: o caractere 20 está localizado como nome de arquivo dentro do pacote "grimoire_weiss.tar.gz".

Para listar o conteúdo de um arquivo .tar.gz é necessário passar alguns parâmetros para o comando tar, são eles:

  • -z: interpreta o arquivo utilizando um programa compactador chamado gunzip
  • -t: lista o conteúdo, porém, é necessário especificar o arquivo com outro parâmetro
  • -f: recebe como argumento um nome de arquivo nos formatos .tar.gz

Então, a linha de comando para listar o conteúdo de um arquivo .tar.gz é:

$ tar -ztf # nome_do_arquivo.tar.gz para listar conteúdo

Dica: o caractere 21 está localizado dentro de um arquivo compactado no arquivo "grimoire_weiss.tar.gz"

Para descompactar um pacote .tar.gz usa-se o parâmtro -x, de extract. Porém, ainda é necessário informar o arquivo com o parâmetro -f. algumas vezes, também é necessário informar o uso do programa gunzip.

$ tar -xf # nome_do_arquivo.tar.gz que será descompactado

IMPORTANTE: o parâmetro -f deve ser o último e o nome do arquivo deve aparecer como argumento logo na sequência.

9. Últimos caracteres 22 e 23

Volte para o diretório principal localizado em "/home/usuário/tutorial_bash_nv01/" e acesse o diretório "exercícios/exercício09/", um diretório vazio!

9.1 Contar caracteres

Dica: o caractere 22 correto está dentro do arquivo com exatos 23 caracteres

Para contar a quantidade de caracteres de um arquivo, incluindo espaço em branco, utilize o comando wc com o parâmetro que não será informado neste documento. Desta forma, não esqueça de ler o manual.

$ wc parâmetro_não_informado #nome_do_arquivo_1 nome_do_arquivo_2 ... nome_do_arquivo_x

É possível inserir como argumentos o nome de vários arquivos, então, para facilitar a sua vida, você pode usar o caractere curinga * já conhecido.

9.2

Dica: o caractere 23 está escondido em algum lugar do documento chamado "README.md"
lembra como procura por arquivos?
lembra como procurar por texto dentro de um arquivo? Procure por ": #" (com as áspas!)

Fim

Agora que você chegou ao fim, reuna os 23 caracteres e busque as 2 palavras no google imagens!


Licença

Este tutorial é uma adaptação do tutorial bash_tutorial de Kristian Rother e publicado sobre a Licença Creative Commons Attribution Share-alike License 4.0

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages