Manual do Hacker Especial - Volume 2 (2019-07)

(Antfer) #1

80 | Manual do Hacker Especial


Com todos os comandos disponíveis no Bash, esta
abordagem bem simples de programação já te dá um poder bem
expressivo em seus scripts. Para fazer coisas realmente
poderosas, entretanto, nós precisaremos algumas das colas
encontradas em outras linguagens de programação para
adicionar flexibilidade ao nossos scripts. Vamos começar com
variáveis, que nos permitem dar nomes aos valores. Considere:
#!/bin/bash

name=Jon
echo “Hello ${name}”
echo “${name}, that’s a nice name.”
A primeira linha deste comando (após #!) atribui a
sequência de texto Jon para a variável name. Depois de fazer
essa atribuição, você poderá referenciar aquela variável em
qualquer parte do script em questão colocando a variável
name dentro de ${}. Quando você rodar o script, o Bash
analisará as sequências e substituirá o valor de name sempre
que encontrar ${name}.
Apenas isso já é bem útil, mas o Bash tem truques que
auxiliam ainda mais. O mais útil, você pode atribuir a saída de
um comando para uma variável cercada por seus acentos
agudos ao contrário:
date=`date +%Y-%m-%d`
Estas atribuições de saída deste comando de data (2015-09-

01, qualquer que seja a data quando você estiver lendo isto)
para a data variável para reutilizar em seu script mais tarde.
Você pode ser ainda mais esperto, entretanto, e entrelaçar a
saída de comandos diretamente em outra sequências usando
a construção $():
echo “Today’s date is $(date +%Y-%m-%d)”
Este exemplo em particular é bem útil quando você estiver
fazendo cópias de segurança, porque ele permite que você
crie arquivos com a data de hoje.

Controle de fluxo
Outro pedaço de cola que o Bash fornece para juntar todos os
seus comandos, e que é comumente encontrado em outras
linguagens de programação, são ferramentas para controlar o

fluxo de seus programas. Até agora, você só foi capaz de ter
o Bash para executar seus comandos na ordem estrita que
você os executou, mas o que acontece se você quiser mudar
a maneira que seu programa se comporta baseado em
algumas condições? Bem, estas ferramentas de controle de
fluxo permitem que você faça isso.
O primeiro nesta família de ferramentas que
mostraremos é a sentença if...then. A ideia desta é checar
sempre que alguma condição é verdadeira, como um
determinado arquivo sendo apresentado, e somente se sua
condição for verdadeira, executar o código a seguir:
#!/bin/bash

if [ 2 > 1 ]; then
echo “True”
fi
Este é um exemplo trivial, porque ele sempre exibirá
True, mas é útil, porque pode demonstrar a sintaxe
utilizada. No Bash, sentenças if são construídas por meio
da digitação da palavra if, seguida por uma expressão
para ser avaliada dentro de colchetes. Este é seguido
pela palavra-chave then, antes da expressão a ser
executada se a sentença if for verdadeira, antes de
finalmente fechar o bloco com a palavra-chave fi.
O Bash tem toda uma série de testes embutidos,
muitos dos quais podem ser bem úteis de fato, incluindo
-f , que verifica se um arquivo existe e -nt para verificar se
um arquivo é mais novo do que o outro:
if [ -f /var/run/backup.lock ]; then

Você pode
referenciar
arquivos
usando várias
técnicas
diferentes,
incluindo
caminhos
absolutos e
relativos


$PAT H


Não há nada de misterioso sobre os executar comandos
no Bash. Quando você digita um nome, o shell encontra
o binário ou o script que o nome refere-se e, em seguida,
o executa como se fosse um script normal ou um
programa sendo executado pelo usuário, como em ./
hello.bash. Mas se você não tem de especificar o
caminho absoluto ao programa, como o shell sabe onde
encontrar o arquivo?
A resposta é a variável $PATH. Em seu shell, você tem
toda uma série de variáveis de ambiente que afetam a
maneira como os programas rodam e os comando
interpretados internamente no shell atual. Uma destas
variáveis é chamada PATH, e contém uma lista dos
diretórios onde os comandos binários ou scripts podem
ser encontrados para execução.
Sempre que você inserir o nome de um comando, o
shell olhará pela lista de diretórios nesta variável, da
esquerda para direita, até encontrar um arquivo com o
mesmo nome do comando que você acabou de
executar. Caso não encontre o correspondente,
reportará um erro:
-bash: foo: command not found
Você pode inspecionar os conteúdos da sua variável
$PATH ecoando, assim como em qualquer outra
variável: echo ${PATH}. E você pode modificá-la
também, configurando-a como qualquer outra variável.
Caso você queira que suas mudanças persistam após
você terminar a sessão do shell atua, você precisará
adicionar a mudança de um dos arquivos de
configuração Bash – .bashrc ou .bash_profile –
dependendo se você quer que esta aplicação acesse
shells, subshells ou ambas.

“Agora, você deve ser capaz de


escrever scripts para automatizar


qualquer operação”


Programação | NoSQL


Grupo Unico PDF Passe@diante

Free download pdf