Exercício – Experimentar o Bash

Concluído

No seu próprio computador Linux, pode executar comandos do Bash localmente. Se tiver acesso aos servidores Linux, pode utilizá-los remotamente e executar comandos do Bash nos mesmos. Mas ninguém quer experimentar um sistema de produção ao vivo, especialmente no seu primeiro dia em Northwind.

Nesta unidade, irá utilizar o Azure Cloud Shell à direita como o seu terminal Linux. O Azure Cloud Shell é um shell que você pode acessar por meio do portal do Azure ou em https://shell.azure.com. Não é preciso instalar nada no seu PC ou portátil para o utilizar.

Familiarize-se com o Cloud Shell

Em primeiro lugar, vamos explorar o que está no Cloud Shell ao utilizar os comandos do Bash que ficámos a conhecer.

  1. Utilize o comando ls para apresentar todos os ficheiros e subdiretórios no diretório atual:

    ls
    
  2. Deverá ver uma saída semelhante à seguinte:

    yourname@Azure:~$ ls
    clouddrive
    

    clouddrive é um subdiretório do seu diretório atual. É uma partilha de ficheiros montada que persiste se estiver a utilizar o Cloud Shell na sua própria conta. No momento, você está usando-o na área restrita do Microsoft Learn.

  3. Mas qual é o diretório atual? Vamos usar o pwd comando para descobrir. pwd significa "imprimir diretório de trabalho". Ele imprime o caminho de formulário longo para o diretório em que você está agora.

    pwd
    
  4. Deverá ver um resultado como este:

    yourname@Azure:~$ pwd
    /home/yourname
    

    Esta saída significa que está num diretório chamado yourname (oseunome) dentro de um diretório chamado home (raiz), na raiz do sistema de ficheiros do Linux.

  5. Não parece haver muitos itens no nosso diretório atual. Utilizemos um sinalizador do Bash para imprimir todos os ficheiros e diretórios ocultos e confirmar que é mesmo assim.

    ls -a
    
  6. Esta saída apresentou-nos muito mais itens neste diretório do que pensávamos inicialmente.

    yourname@Azure:~$ ls -a
    .  ..  .azure  .bash_history  .bash_logout  .bashrc  clouddrive  .profile  .tmux.conf  .viminfo
    
  7. O que são todos aqueles ficheiros e subdiretórios? Alguns são ficheiros em segundo plano para que o Cloud Shell funcione. Analisemos alguns dos outros.

    • . refere-se ao seu diretório atual e .. refere-se ao seu diretório principal. Onde quer que esteja, se imprimir todos os ficheiros e diretórios ocultos, verá . e .. imprimirá.
    • .bash_history é um ficheiro especial do Bash no qual todos os comandos que introduz na shell são armazenados. Bash se lembra do seu histórico de comandos, que, como veremos mais adiante, é útil.
    • .bash_logout é outro arquivo Bash especial que é lido e executado sempre que existe um shell de login. Os superutilizadores do Linux podem modificá-lo para personalizar o seu ambiente.
    • .bashrc é um importante ficheiro de configuração do Bash que é executado sempre que inicia uma nova shell. Se decidir abrir este ficheiro para o ver, tenha cuidado ao fazer alterações, pois podem ter consequências indesejadas.

Recuperar o seu histórico e comandos de preenchimento automático

Ao introduzir comandos complicados como o seguinte, é fácil cometer um erro:

ls -a .azure/commands/202?*.log

Felizmente, o Bash fornece algumas funcionalidades para o ajudar.

Recuperar comandos anteriores

  1. Experimente introduzir o seguinte comando que tem um erro de digitação (203? em vez de 202?):

    ls -a .azure/commands/203?*.log
    
  2. Deverá ser apresentada a seguinte saída a informá-lo de que não existem ficheiros que correspondam a esse padrão:

    ls: cannot access '.azure/commands/203?*.log': No such file or directory
    
  3. Em vez de introduzir novamente todo o comando para corrigir o erro, pode recuperar comandos introduzidos anteriormente ao utilizar as teclas Seta Para Cima e Seta Para Baixo. Experimente utilizar a tecla Seta Para Cima para recuperar o seu comando incorreto. Em seguida, utilize a tecla Seta Para a Esquerda para o corrigir ao substituir o 3 final por um 2. Selecione novamente Enter para submeter o comando corrigido.

    Usar a tecla de seta para cima várias vezes seguidas move você para trás vários comandos. Utilize a tecla Seta Para Baixo para passar para comandos posteriores.

  4. Deverá agora ser apresentado algo semelhante à seguinte saída. Permite-lhe saber que o seu comando funcionou corretamente para apresentar ficheiros que correspondem ao padrão fornecido.

    .azure/commands/2020-01-29.21-56-35.login.103.log
    .azure/commands/2020-01-29.21-56-38.account_set.112.log
    

Preenchimento automático

Suponhamos que pretende ler o conteúdo de um dos ficheiros que acabou de encontrar. Pode utilizar o comando cat (abreviatura de "concatenar") para imprimir o conteúdo de um ficheiro no ecrã.

  1. Para utilizar este comando, poderá utilizar o nome de ficheiro completo, como neste caso:

    cat .azure/commands/2020-01-29.21-56-35.login.103.log
    
  2. No entanto, tem de escrever demasiado, o que pode dar origem a erros. Em vez disso, pode utilizar o preenchimento automático rudimentar do Bash para executar a maior parte do trabalho por si. Experimente escrever o seguinte:

    cat .a
    

    Em seguida, selecione a Tecla de Tabulação. O que acontece?

  3. Deverá ser apresentado o resto da palavra "azure/" no comando:

    cat .azure/
    

    Continue a escrever o início das palavras e a utilizar a Tecla de Tabulação para preencher automaticamente. Tenha em mente que, se houver uma ambiguidade, o Bash não preencherá nada. Você pode selecionar Tab duas vezes para que o Bash imprima todos os arquivos e diretórios em um determinado caminho que correspondam às letras que você já digitou.

  4. Brinque até chegar a um arquivo .log real no diretório de comandos. Em seguida, selecione Enter para utilizar o comando cat e imprimir o respetivo conteúdo no ecrã. Pode ser semelhante ao seguinte:

    CMD-LOG-LINE-BEGIN 103 | 2020-01-29 21:56:35,426 | INFO | az_command_data_logger | command args: login --identity
    CMD-LOG-LINE-BEGIN 103 | 2020-01-29 21:56:37,604 | INFO | az_command_data_logger | exit code: 0
    

    Tenha em mente que, se você já digitou uma letra incorreta, o Bash não será capaz de adivinhar corretamente qual letra você pretendia digitar.

Utilizar o comando man

Acabámos de utilizar o comando cat, mas ainda não sabe muito sobre o mesmo. Pratique o comando man para apresentar mais informações sobre o comando cat.

  1. Introduza o seguinte comando para compreender melhor o que é o comando cat e como utilizá-lo:

    man cat
    

    Sim, introduziu "man cat" ("gato homem") na sua shell. Os comandos do Bash podem ser tão enigmáticos quanto divertidos!

  2. Deverá ver um resultado como este:

    CAT(1)                                       User Commands                                       CAT(1)
    
    NAME
           cat - concatenate files and print on the standard output
    
    SYNOPSIS
           cat [OPTION]... [FILE]...
    
    DESCRIPTION
           Concatenate FILE(s) to standard output.
    
           With no FILE, or when FILE is -, read standard input.
    
           -A, --show-all
                  equivalent to -vET
    
           -b, --number-nonblank
                  number nonempty output lines, overrides -n
    
           -e     equivalent to -vE
    
    ...
    
  3. Utilize as setas para cima e para baixo para percorrer a página do manual e introduza q para sair.

Mudar de diretório

Pratiquemos mais um comando básico do Bash: cd.

Ao utilizar a shell, está sempre num diretório, tal como no caso de uma pasta no seu PC ou Mac. Para mudar de pasta, utiliza o comando cd (mudar de diretório).

É simples, mas vamos praticar um pouco.

  1. Em primeiro lugar, introduza o seguinte comando para garantir que está no local certo:

    cd ~
    

    Este comando fez com que regressasse ao seu diretório raiz especial na shell, caso ainda não estivesse lá.

  2. Confirme ao utilizar o comando pwd mais uma vez:

    pwd
    
  3. Deverá ver um resultado como este:

    /home/yourname
    

    ~ é outro caráter especial no Bash que se refere a este diretório raiz. Pode utilizar ~ para se referir à localização /home/yourname (/raiz/oseunome), independentemente de onde se encontrar na shell.

  4. Vamos mudar para o diretório que contém ficheiros de registo (onde estávamos anteriormente):

    cd .azure/commands/
    

    Pode introduzir manualmente o comando completo ou utilizar a Tecla de Tabulação para preencher automaticamente.

    Deverá agora ver que a linha em que introduz comandos tem um aspeto diferente, mostrando-lhe onde está na shell:

    yourname@Azure:~/.azure/commands$
    
  5. Experimente utilizar a sintaxe especial .. para subir um diretório:

    cd ..
    

    Deverá agora estar um nível acima na estrutura de diretórios, e a sua linha de comando deverá ser semelhante à seguinte:

    yourname@Azure:~/.azure$
    

Bom trabalho! Deu os primeiros passos para ser um perito no Bash. Vamos continuar a aprender.

Verifique o seu conhecimento

1.

Para qual diretório você mudaria se entrasse cd . como um comando Bash?