Exercício – Experimentar o Bash

Concluído

Em seu próprio computador Linux, você pode executar comandos Bash localmente. Se você tiver acesso a servidores Linux, poderá entrar neles remotamente e executar os comandos Bash lá. Mas ninguém quer fazer experimentos em um sistema de produção ativo, especialmente no primeiro dia na Northwind.

Nesta unidade, você usa o Azure Cloud Shell à direita como seu terminal do Linux. O Azure Cloud Shell é um shell que pode ser acessado por meio do portal do Azure ou em https://shell.azure.com. Você não precisa instalar nada em seu PC ou laptop para usá-lo.

Familiarize-se com o Cloud Shell

Primeiro, vamos explorar o que há no Cloud Shell usando os comandos Bash que aprendemos.

  1. Use o comando ls para listar todos os arquivos e subdiretórios no diretório atual:

    ls
    
  2. Você deverá ver uma saída semelhante a esta:

    yourname@Azure:~$ ls
    clouddrive
    

    clouddrive é um subdiretório do seu diretório atual. É um compartilhamento de arquivo montado que persistirá se você estiver usando o Cloud Shell em sua própria conta. Agora, você o está usando na área restrita do Microsoft Learn.

  3. Mas espere: qual é diretório atual? Vamos usar o comando pwd para descobrir. pwd significa "print working directory" (imprimir diretório de trabalho). Ele imprime o caminho de formato longo para o diretório no qual você está agora.

    pwd
    
  4. Você deverá ver uma saída como esta:

    yourname@Azure:~$ pwd
    /home/yourname
    

    Essa saída significa que você está em um diretório chamado seunome dentro de um diretório chamado home na raiz do sistema de arquivos do Linux.

  5. Parece que não há muito em nosso diretório atual. Vamos usar um sinalizador Bash para imprimir todos os arquivos e diretórios ocultos para verificar novamente se está correto.

    ls -a
    
  6. Essa saída nos mostrou muito mais coisas nesse diretório do que inicialmente imaginamos.

    yourname@Azure:~$ ls -a
    .  ..  .azure  .bash_history  .bash_logout  .bashrc  clouddrive  .profile  .tmux.conf  .viminfo
    
  7. Quais eram todos esses arquivos e subdiretórios? Alguns são arquivos nos bastidores para fazer o Cloud Shell funcionar. Vamos discutir alguns dos outros.

    • . refere-se ao seu diretório atual e .. refere-se ao seu diretório pai. Independentemente do local em que você está, se imprimir todos os arquivos e diretórios ocultos, verá . e .. impressos.
    • .bash_history é um arquivo Bash especial em que todos os comandos que você insere no Shell são armazenados. O Bash lembra o histórico de comandos, o que, como veremos mais adiante, é útil.
    • .bash_logout é outro arquivo de Bash especial lido e executado sempre que existe um shell de credenciais. Os superusuários do Linux podem modificá-lo para personalizar seu ambiente.
    • .bashrc é um arquivo de configuração de Bash importante executado sempre que você inicia um novo shell. Se você decidir abrir esse arquivo para vê-lo, tenha cuidado ao fazer alterações, pois elas podem ter consequências indesejadas.

Lembre-se do histórico e dos comandos de preenchimento automático

Quando você está inserindo comandos complicados como este, é fácil cometer um erro:

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

Felizmente, o Bash oferece algumas funcionalidades para ajudar você.

Lembrando comandos anteriores

  1. Tente inserir esse comando com um erro de digitação (203?, em vez de 202?):

    ls -a .azure/commands/203?*.log
    
  2. Você deve ver essa saída informando que não havia nenhum arquivo correspondendo a esse padrão:

    ls: cannot access '.azure/commands/203?*.log': No such file or directory
    
  3. Em vez de inserir tudo novamente para corrigir o erro, você pode recuperar comandos inseridos antes usando as teclas Seta para cima e Seta para baixo. Tente usar a tecla Seta para cima para retornar o comando incorreto. Em seguida, use a tecla Seta para a esquerda para corrigi-lo substituindo o 3 final por um 2. Selecione Enter novamente para enviar o comando corrigido.

    Usar a tecla Seta para cima várias vezes em uma o levará de volta vários comandos. Use a tecla Seta para baixo para ir para comandos posteriores.

  4. Agora você deve ver algo semelhante à saída a seguir. Ele informa que seu comando funcionou corretamente para listar arquivos que corresponderam 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

Digamos que você queira ler o conteúdo de um dos arquivos que acabou de encontrar. Você pode usar o comando cat (abreviação de "catenate", concatenar, em inglês) para imprimir o conteúdo de um arquivo na tela.

  1. Para usar esse comando, você pode usar o nome completo do arquivo, como:

    cat .azure/commands/2020-01-29.21-56-35.login.103.log
    
  2. Mas isso é muito para digitar e muito propenso a erros. Em vez disso, você pode usar o preenchimento automático rudimentar da Bash para fazer a maior parte do trabalho para você. Tente digitar:

    cat .a
    

    Em seguida, selecione a tecla Tab. O que acontece?

  3. Você deve ver o restante da palavra "azure/" aparecer no comando:

    cat .azure/
    

    Continue digitando o início das palavras e usando Tab para preenchimento automático. Saiba que, se houver uma ambiguidade, o Bash não preencherá nada. Você pode selecionar Tab duas vezes para fazer com que o Bash imprima todos os arquivos e diretórios em um determinado caminho que correspondam às letras que você já digitou.

  4. Trabalhe até obter um arquivo .log real no diretório de comandos. Em seguida, selecione Enter para usar o comando cat para imprimir seu conteúdo na tela. Poderá 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
    

    Saiba que, se você já tiver digitado uma letra incorreta, o Bash não conseguirá adivinhar corretamente qual letra você pretendia digitar.

Use man.

Acabamos de usar o comando cat, mas você ainda não sabe muito sobre isso. Pratique man para abrir mais informações sobre o comando cat.

  1. Digite o seguinte comando para entender mais sobre o que cat é e como usá-lo:

    man cat
    

    Sim, você inseriu "man cat" (homem gato) no seu shell. Os comandos Bash podem ser incompreensíveis e engraçados!

  2. Você deverá ver uma saída como esta:

    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. Use as setas para cima e para baixo para percorrer a página manual e insira q para sair.

Mudar de diretórios

Vamos praticar um comando mais básico do Bash: cd.

Ao usar o shell, você está sempre dentro de um diretório, assim como uma pasta no seu PC ou Mac. Para alterar as pastas, use o comando cd (change directory, ou mudar de diretório, em inglês).

É simples, mas vamos praticar um pouco.

  1. Primeiro, digite este comando para verificar se você está no lugar certo:

    cd ~
    

    Esse comando o levou de volta para o diretório home especial no shell, se você ainda não estava lá.

  2. Verifique novamente usando o comando pwd outra vez:

    pwd
    
  3. Você deverá ver uma saída como esta:

    /home/yourname
    

    ~ é outro caractere especial no Bash que se refere a esse diretório base. Você pode usar ~ para se referir ao local /home/seunome, independentemente do local em que você está no shell.

  4. Vamos mudar para o diretório que contém os arquivos de log (em que estávamos antes):

    cd .azure/commands/
    

    Você mesmo pode inserir o comando completo ou usar Tab para preenchimento automático.

    Agora você deve ver que a linha em que você insere comandos parece diferente, mostrando o local em que você está no shell:

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

    cd ..
    

    Agora você deve estar um nível acima na estrutura de diretório, e a linha de comando deve ter a seguinte aparência:

    yourname@Azure:~/.azure$
    

Ótimo trabalho! Você deu os primeiros passos para tornar-se um especialista em Bash. Vamos continuar aprendendo.

Verifique seu conhecimento

1.

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