Skip to content

Instantly share code, notes, and snippets.

@gpupo
Last active May 17, 2023 18:17
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gpupo/06e0ee5372a9253b93e532cdf34b742c to your computer and use it in GitHub Desktop.
Save gpupo/06e0ee5372a9253b93e532cdf34b742c to your computer and use it in GitHub Desktop.
Bash, um interpretador de comandos para sistemas operacionais Unix

Bash, um interpretador de comandos para sistemas operacionais Unix

Criei um documento para uso nas minhas aulas sobre Programação com foco em componentes de infraestrutura. É uma síntese de tópicos importantes que espero que seja útil para você.

Fique à vontade para explorar o conteúdo e utilize-o como um guia durante as aulas. Espero que aproveite e tenha uma ótima experiência de aprendizado!

O Bash (Bourne Again SHell) é um interpretador de comandos para sistemas operacionais Unix, como Linux e macOS. Ele fornece uma interface de linha de comando poderosa e flexível, permitindo que os usuários executem comandos e automatizem tarefas no sistema operacional.

Programação procedural

A programação procedural é baseada na execução sequencial de instruções, onde o programa é dividido em funções ou procedimentos que manipulam dados. Nesse paradigma, o foco está na estrutura do programa, com ênfase nas ações e procedimentos a serem realizados.

Utilidades do Bash na infraestrutura de TI

  • Automatizar o provisionamento de servidores e configuração de serviços.
  • Realizar backups e restauração de dados.
  • Monitorar e gerenciar servidores e redes.
  • Executar comandos remotos em vários sistemas.
  • Coletar e analisar dados de log.
  • Realizar integração e entrega contínua (CI/CD).

O Bash é amplamente suportado em sistemas operacionais Unix e Linux, tornando-o uma escolha popular para a automação de tarefas de infraestrutura de TI.

Diferenças entre o Bash e outras linguagens de programação.

O Bash é uma linguagem de script do shell Unix, voltada principalmente para automação de tarefas no ambiente de linha de comando. Ao contrário de outras linguagens de programação, como Python ou Java, o Bash é interpretado em vez de ser compilado. Ele possui recursos específicos para interagir com o sistema operacional e executar comandos. Além disso, o Bash possui uma sintaxe mais simples e direta, focada em manipulação de texto e execução de comandos do sistema, enquanto outras linguagens de programação são mais versáteis e abrangem uma ampla gama de aplicações, como desenvolvimento web, ciência de dados e aplicativos de desktop.

Uso de source e funções no terminal Unix.

No terminal Unix, o comando source é usado para executar um arquivo de script no contexto atual do shell, permitindo que as variáveis e funções definidas no arquivo sejam acessadas no terminal. Por exemplo, ao executar source arquivo.sh, as funções declaradas no "arquivo.sh" estarão disponíveis para uso imediato. As funções no terminal Unix são blocos de código reutilizáveis que podem ser definidos usando a sintaxe nome_da_funcao() { comandos }. Elas permitem agrupar comandos relacionados e executá-los facilmente, tornando o trabalho no terminal mais eficiente e organizado.

Variáveis de ambiente: declaração, atribuição e utilização de variáveis no Bash.

No Bash, as variáveis de ambiente podem ser declaradas e atribuídas da seguinte forma: VARIAVEL=valor. Para acessar o valor de uma variável, utiliza-se o prefixo $, por exemplo: $VARIAVEL. É possível definir variáveis de ambiente no arquivo .bashrc ou no momento da execução do script usando o comando export VARIAVEL=valor. Para exibir o valor de uma variável, usa-se o comando echo $VARIAVEL. As variáveis de ambiente são úteis para armazenar informações como caminhos de diretórios, configurações e outros dados que podem ser acessados em diferentes partes do sistema.

Permissões de execução (chmod, chown, chgrp).

As permissões de execução dos arquivos com scripts Bash são importantes para controlar quem pode executar esses scripts. O comando chmod é usado para definir as permissões de um arquivo. Por exemplo, chmod +x script.sh concede permissão de execução ao arquivo "script.sh". O comando chown permite alterar o proprietário de um arquivo, enquanto chgrp permite alterar o grupo do arquivo. Por exemplo, chown user script.sh atribui o proprietário "user" ao arquivo. As permissões de execução são essenciais para garantir que os scripts Bash sejam executados apenas por usuários autorizados, reforçando a segurança e o controle de acesso aos arquivos.

Um exemplo de programa em Bash

#!/bin/bash

# Constantes
readonly PI=3.14159
readonly GREETING="Olá, bem-vindo(a)!"

# Função para calcular a área de um círculo
# Parâmetro: raio do círculo
# Retorna: área do círculo
calculate_area() {
  local radius=$1
  local area=$(echo "scale=2; $PI * $radius * $radius" | bc)
  echo "A área do círculo com raio $radius é: $area"
}

# Função para cumprimentar o usuário
greet_user() {
  echo "$GREETING"
  echo "Qual é o seu nome?"
  read name
  echo "Olá, $name! É um prazer conhecê-lo(a)."
}

# Função principal
main() {
  greet_user
  echo "Vamos calcular a área de um círculo."
  echo "Por favor, informe o raio do círculo:"
  read radius
  calculate_area $radius
}

# Chamada da função principal
main

Este programa em Bash apresenta as seguintes características:

Define duas constantes: PI e GREETING. Implementa duas funções: calculate_area para calcular a área de um círculo com base no raio fornecido e greet_user para cumprimentar o usuário e solicitar seu nome. A função main é a função principal que chama as outras funções. O programa solicita ao usuário que forneça o raio do círculo e, em seguida, calcula e exibe a área do círculo com base no raio fornecido.

Sugestão de leitura:

Tutoriais online interativos para praticar Bash:

@gpupo
Copy link
Author

gpupo commented May 17, 2023

Desafio Earned a badge:

Linkedin Bash assessment

https://www.linkedin.com/help/linkedin/answer/a513320

A funcionalidade LinkedIn Skill Assessments feature permite demonstrar seu conhecimento nas habilidades que você adicionou ao seu perfil.

Os tópicos na avaliação de Bash incluem:

  • Operators
  • Scripting
  • Expansion
  • Environment
  • Constructs
  • Data Structures
  • Commands
  • Access Control
  • Bash Commands
  • Pattern Matching

@gpupo
Copy link
Author

gpupo commented May 17, 2023

Um exemplo simples: REMOVE all branches local and remote, except master banch
https://gist.github.com/gpupo/ba16de62edde71ac850a98ce41a2d47e

@gpupo
Copy link
Author

gpupo commented May 17, 2023

Algumas funções um pouco mais complexas no meu repositório kakashi https://github.com/gpupo/kakashi/tree/master/src/flood-monitor

@gpupo
Copy link
Author

gpupo commented May 17, 2023

Mais alguns arquivos para compilação kakashi (2015) https://github.com/gpupo/kakashi/tree/master/bin

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment