Se você está começando com sistemas Linux, termos como “Shell scripting” ou “Script Bash”Pode ser bastante comum - mas o que eles significam? Antes de entrarmos em detalhes, aprender a fazer scripts Bash pode ajudá-lo a economizar tempo na execução e execução de várias tarefas do sistema e entender melhor a linha de comando do Linux (Terminal) e automatizar várias tarefas do sistema.
O que é Bash?
Bash, um acrônimo para “Bourne-Again-Shell,” é um shell Unix ou interpretador de linguagem de comando para o sistema operacional GNU. Tem sido o principal Shell para distribuições Linux e Apple macOS antes do macOS Catalina. O Bash também está disponível para Windows 10 por meio do subsistema Windows para Linux.
O Bash normalmente é executado em uma janela de texto comumente conhecida como Terminal, onde os usuários digitam comandos para realizar várias tarefas. O Bash também pode executar comandos escritos em um arquivo, um método conhecido como “Script bash.”
Diferença entre script Bash e script Shell
Scripts Shell e Scripts Bash não são a mesma coisa. Com o script Bash, você está usando explicitamente o shell bash. Por outro lado, o script Shell pode ser uma palavra bastante ampla, pois temos outros shells disponíveis além do Bash. Alguns dos mais comuns incluem Korn (ksh), C shell (csh), Z shell (zsh) e o Bash shell (sh). No entanto, não seria uma surpresa encontrar pessoas usando script bash e script shell alternadamente com o mesmo significado. Nossa postagem sobre os 6 melhores shells de código aberto para Linux fornece uma descrição detalhada desses shells.
Nesta postagem, veremos o script Bash. Por padrão, muitas distribuições de Linux disponíveis usam o shell Bash. Confira nossa postagem sobre as 6 melhores distribuições de Linux para iniciantes. Para confirmar o shell que você está usando em sua distribuição Linux atual, execute o comando no Terminal.
echo $ SHELL
Na imagem acima, você pode ver que o interpretador padrão no meu sistema é o bash. Atualmente, estou executando o Ubuntu 20.04 LTS. Vamos mergulhar!
Compreendendo scripts Bash
Scripts Bash são arquivos de texto contendo comandos bash que são executados para realizar várias tarefas. Para escrever esses scripts, você só precisa de um editor de texto simples como gedit, leaf pad, vim, nano e muito mais. Lembre-se de salvar seus scripts com um .sh
extensão e como texto simples e não rich text. Um dos meus editores favoritos que uso para escrever scripts é o editor nano.
Nomeando, atribuindo permissões e executando um script Bash
Conforme explicado acima, certifique-se de usar o .extensão sh para seus scripts bash. Por exemplo, você pode ter um script com o nome fosslinux_backup.sh
. No entanto, seria melhor se você fosse cauteloso ao nomear seus scripts. Por exemplo, a maioria das pessoas gosta de salvar a maioria de seus scripts como “teste.”Desconhecido para a maioria, existe um comando interno do Unix chamado teste, que verifica os tipos de arquivo e compara os valores. Você pode usar o comando which para verificar se existe um programa com o mesmo nome do seu script para evitar quaisquer conflitos de programa.
qual [comando] e.g qual teste
A partir da saída acima, podemos ver que o teste já é um comando embutido. Portanto, para evitar conflitos entre programas, não nomearei nenhum dos meus scripts como "teste.”
Para tornar o script executável para todos os usuários, use o comando abaixo:
chmod + x [script.sh]
Para tornar o script executável para o usuário atual, use o comando abaixo:
chmod u + x [script.sh]
Agora, para executar o script, execute o comando abaixo:
./ [script_name]
Com o método acima, você perceberá que precisará usar o CD
comando para mover para o diretório que contém o script ou passar o caminho para o script. No entanto, há uma solução alternativa para isso. Salve seus scripts no bin
diretório presente no diretório home.
Com as atualizações recentes, a maioria das distribuições não vem com o bin
pasta por padrão. Você será, portanto, obrigado a criá-lo manualmente. Ao colocar seus scripts nesta pasta, você pode executar o script digitando seu nome no Terminal sem usar o CD
e ./
comandos.
Diretrizes de script Bash
Antes de escrever seu primeiro script, existem algumas diretrizes que você precisa entender ao escrever scripts.
- Todos os seus scripts devem começar com a linha “#!/ bin / bash.”
- Coloque cada comando em uma nova linha.
- Cada comentário começa com um
#
símbolo. - Os comandos são incluídos
()
colchetes.
O #!/ bin / bash
Declaração (hach-bang hack) é o caminho para o shell que usaremos. Se você estiver usando outro shell, você precisará editar este caminho. Entendemos que todos os comentários começam com o #
símbolo. No entanto, quando seguido por um (!)
marca no Hash-Bang Hack, o script é forçado a executar com o shell apontado por esta linha. No nosso caso, é o shell Bash.
Seu primeiro script Bash
Como a maioria das linguagens de programação, vamos escrever um script que imprime o "Olá Mundo" declaração quando executada. Abra seu editor de texto favorito e cole os comandos abaixo. Salve o arquivo de texto como fossHelloWorld.sh
ou qualquer outro nome que não seja um comando embutido.
#!/ bin / bash # Este script imprimirá 'Hello World' no Terminal echo "Hello World"
Depois de salvar o arquivo, torne-o executável executando o comando abaixo:
chmod + x fossHelloWorld.sh
Agora, execute-o com o comando abaixo:
./ fossHelloWorld.sh
O script acima tem apenas três linhas. O primeiro é o Hash-Bang Hack, que discutimos acima, o segundo é um comentário e o terceiro é o comando que será executado. Observe, os comentários nunca são executados.
Vejamos outros recursos de script bash que você pode utilizar.
Comando eco
O comando Echo é usado para imprimir a saída na linha de comando ou Terminal do Linux. Se você é um desenvolvedor e já trabalhou com PHP antes, você deve ter encontrado este comando também. Vamos escrever um pequeno script bash para demonstrar como este comando funciona.
#!/ bin / bash # Vamos imprimir a primeira linha echo "Este é o Fosslinux.com - Com uma nova linha "# Vamos imprimir a segunda instrução sem uma nova linha echo -n" This is Fosslinux - No new Line "
Salve seu script, atribua as permissões necessárias e execute-o.
Para entender o código, o primeiro comando echo imprime uma instrução e vai para a próxima linha. O segundo comando echo tem o -n
argumento que impede o script de ir para a próxima linha. Você pode usar muitas outras opções com o comando Echo, incluindo variáveis, como veremos a seguir.
Variáveis
Variáveis são uma parte comum e necessária de qualquer linguagem de programação. Pode-se declarar variáveis Bash de várias maneiras. Ao atribuir um valor a qualquer variável, você não precisa usar nenhum símbolo. No entanto, ao chamar o valor da variável, você precisará usar o $
sinal no início da variável.
Você pode usar variáveis no Terminal ou como scripts. Execute os comandos abaixo em seu Terminal.
meuWebsite = "Fosslinux.com "echo $ myWebsite
Agora vamos criar um script bash que pega duas entradas do usuário e as armazena em variáveis $ x
e $ y
. O script irá então verificar se os dois valores são iguais ou não.
#!/ bin / bash echo "Digite o primeiro número" leia a echo "Digite o segundo número" leia b if [[$ a -eq $ b]] then echo "Os números são iguais" else echo "Os números não são iguais" fi
Salve o script e execute-o. Na imagem abaixo, você pode ver que inserimos valores diferentes, e o script foi capaz de verificar se eles são iguais ou não.
Agora, vamos dar uma olhada mais de perto no código. As duas primeiras instruções de eco solicitam que o usuário insira o primeiro e o segundo números. O leitura
o comando irá esperar que o usuário insira um número e armazene-o na variável especificada. No nosso caso, isso é uma
e b
. Temos então uma instrução if que verifica se os dois valores são iguais ou não.
Afirmação condicional
Em qualquer linguagem de programação, as declarações condicionais controlam o fluxo de um programa. Um trecho de código será executado apenas quando uma determinada condição for atendida. Algumas das declarações condicionais mais comuns incluem "if-then-else" e "case.”Abaixo está a sintaxe básica da instrução if-then-else.
se [[condição]] entãosenão fi
Dê uma olhada no script abaixo, que usa a declaração condicional "if-then-else".
#!/ bin / bash echo "Enter Your Age" read age if ((age> 18)) then echo "Você pode ir à festa" else echo "Você não está qualificado para ir à festa" fi
Vamos percorrer o roteiro acima. Nós temos o eco
declaração que solicita que os usuários digitem o número da idade. O leitura
declaração armazena a idade inserida em uma variável “idade."Temos então uma declaração condicional if-then-else que verifica se a idade é maior que 18 antes de instruir o usuário.
rotações
Os loops são comumente usados quando você deseja executar um trecho de código várias vezes. Por exemplo, se eu quisesse ecoar 1000 linhas da declaração “Bem-vindo ao Fosslinux,” eu exigiria 1000 declarações de eco. No entanto, com loops, tudo que eu preciso fazer é especificar o número de vezes que desejo que a instrução seja repetida ou impressa no Terminal. O Bash oferece suporte a três tipos de loops; For Loop, While Loop e Until Loop. Vamos dar uma olhada em cada um deles.
-
O For Loop
Um For Loop é usado para iterar através de uma lista de dados especificados ou uma matriz. Abaixo está a sintaxe básica do Bash For Loop;
para valor em 1 2 3 4 5… N faça a instrução1 instrução2 instrução-N feita
ou,
para VALUE em arquivo1 arquivo2 arquivo3 faça a instrução1 em $ VALUE instrução2 instrução-N feita
Dê uma olhada no script abaixo. Ele repete os dias da semana indicados e os imprime no Terminal linha por linha.
#Leia o nome do dia da semana em cada iteração do loop para o dia na segunda, terça, quarta, quinta, quinta, sexta, sábado, domingo, echo "$ day" done
Vamos salvar o script como ForLoop.sh
e executá-lo. Abaixo está uma captura de tela da saída.
Este é apenas um exemplo simples do que você pode fazer com o For Loop. Você também pode combiná-lo com declarações condicionais para completar uma tarefa específica.
-
The While Loop
O Loop While executa uma tarefa específica enquanto uma condição particular permanece Verdadeira. Em cada iteração, o loop verificará primeiro a condição antes de executar as instruções. Quando a condição for falsa, o loop será encerrado. A sintaxe básica do loop While bash é a seguinte:
enquanto [CONDITION] faça [COMMANDS] feito
Por exemplo, podemos ter um script que imprimirá a declaração “Bem-vindo à FOSSLINUX.COM ” 20 vezes até que uma variável X seja definida como 20. Vamos tentar implementar isso de forma prática. Dê uma olhada no script abaixo.
#!/ bin / bash x = 1 enquanto [$ x -le 20] echo "Bem-vindo à FOSSLINUX.COM "x = $ (($ x + 1)) concluído
Vamos salvar o script como WhileLoop.sh
e executá-lo. Abaixo está uma captura de tela da saída.
Vamos dar uma olhada no script While Loop acima. Primeiro declaramos uma variável X dando a ela o valor 1. Em seguida, criamos uma instrução While que produz a instrução “Bem-vindo à FOSSLINUX.COM ”enquanto X for menor que 20. Por último, incrementamos X em um após cada iteração.
-
O Até Loop
Os loops Bash Até são usados para executar um conjunto de instruções ou comandos, desde que a condição definida seja avaliada como falsa. Abaixo está a sintaxe básica do Até Loop.
até [CONDIÇÃO] fazer [INSTARUÇÕES / COMANDOS] pronto
Semelhante ao loop While, o loop until primeiro avalia a condição definida antes de executar as instruções ou comandos. Se a condição for avaliada como falsa, as instruções são executadas. O loop é encerrado quando a condição é avaliada como verdadeira. Dê uma olhada no exemplo abaixo.
#!/ bin / bash count = 0 até [$ count -gt 5] do echo Counter: $ count ((count ++)) done
Depois de salvar e executar o script acima, obtemos a saída abaixo:
Os scripts acima primeiro criam uma contagem de variável e a definem como zero (0). Essa é a condição que controla o fluxo do nosso programa. O loop until verifica se o valor da contagem é maior que 5. Se não estiver, ele irá imprimir as instruções passadas. No entanto, se o valor for maior que 5, o loop terminará imediatamente. Por último, incrementamos o valor da contagem em 1 (contagem ++).
Funções Bash
Na programação e no script, as funções são usadas para conter uma parte reutilizável do código necessária para executar uma tarefa específica. Portanto, se você tiver comandos semelhantes que deseja executar em diferentes partes do seu script, não precisa escrever esses comandos repetidamente. Coloque-os em uma função e execute a função em seu lugar.
Abaixo está a sintaxe básica da função Bash.
function_name ()
ou,
function_name da função
Vamos criar um script simples que faz uso de funções. Primeiro criamos uma função chamada “myFunction”, que produz a declaração “Olá, eu sou a primeira função” quando chamada. A segunda função, "myCities", é um pouco avançada, pois recebe argumentos passados. Os argumentos são fornecidos após chamar o nome da função. Eles são acessíveis na função como $ 1.
#!/ bin / bash myFunction () echo "Olá, sou a primeira função" echo "Olá, sou a primeira função" echo echo "Esta é a segunda função" function myCities () echo Hello $ 1 myFunction myCities Washington, D.C myCities Phoenix
Depois de salvar e executar o script, obtemos a saída abaixo.
Menus Bash
Ao escrever um script para executar uma tarefa avançada, você pode precisar que o usuário selecione uma única opção entre várias opções exibidas no Terminal. Para conseguir isso, vamos usar o bash selecionar
comando.
Ele cria um script de menu simples que solicitará aos usuários que selecionem suas distribuições Linux favoritas em uma lista. Dê uma olhada no script abaixo.
#!/ bin / bash #Imprimir mensagem para o usuário echo "Selecione sua distribuição Linux favorita" selecione distro no Ubuntu Fedora OpenSUSE DeepIN Parrot ArchLinux Kali faça #Imprima o valor selecionado se [[$ distro == "Sair"]] e saia de 0 mais echo "A distribuição Linux selecionada está $ distro" fi done
Vamos salvar o script como menu.sh e execute-o. Nós temos a saída abaixo.
No script acima, temos uma lista de distribuição do Seven Linux a partir do qual o usuário selecionará um. Depois de fazerem uma seleção, ela é armazenada na variável distro
e depois impresso concatenando-o com a string “A distribuição Linux selecionada é.” Os menus de seleção do Bash podem ser bastante úteis, especialmente quando você tem vários scripts executando tarefas diferentes, e é necessário selecionar aquele que deseja executar.
Aritmética
Todas as linguagens de programação suportam a execução de operações aritméticas, e o script bash não é exceção. No entanto, como realizamos operações aritméticas é um pouco diferente. Abaixo está uma das maneiras de realizar operações aritméticas em bash. Veremos quatro tipos de operações aritméticas - soma, divisão e multiplicação.
#!/ bin / bash # Calcular o resultado da soma = $ ((70 + 15)) # Imprimir valor da soma echo "soma = $ resultado" # Calcular o resultado da divisão = $ ((100/25)) # Imprimir valor da divisão eco "divisão = $ result "#Calculate Multiplication result = $ ((15 * 15)) echo" Multiplication = $ result "
Vamos salvar o script acima como aritmética.sh e execute-o. Nós temos a saída abaixo.
Conclusão
Este é um guia completo para iniciantes para começar a usar scripts Bash. No entanto, há mais no Bash além do que é abordado neste tutorial. Um dos lugares que eu recomendaria para aprimorar suas habilidades é o GNU's Bash Reference Manual. Se você enfrentar qualquer problema ou comentar neste post, sinta-se à vontade para clicar nos comentários abaixo.