Exercício – Experimentar o Bash
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.
Use o comando
ls
para listar todos os arquivos e subdiretórios no diretório atual:ls
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.
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
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.
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
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
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
Tente inserir esse comando com um erro de digitação (
203?
, em vez de202?
):ls -a .azure/commands/203?*.log
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
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 um2
. 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.
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.
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
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?
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.
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
.
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!
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 ...
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.
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á.
Verifique novamente usando o comando
pwd
outra vez:pwd
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.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$
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.