Programação em bash - parte 1

Embora geralmente o utilizemos para operações administrativas ou de gerenciamento de arquivos, o conforto de Linux estende sua funcionalidade muito além desse propósito, permitindo-nos programar Scripts Este guia não pretende ser uma referência completa sobre a programação Bash, mas sim uma introdução aos comandos e estruturas básicas, que nos permitirão expandir o poder de nosso sistema GNU / Linux.

O que é um "Script"?

Basicamente, dizemos que é um arquivo que contém código escrito em uma determinada linguagem de programação que o sistema usa para uma determinada tarefa. Não precisa ter uma entrada externa ou interface gráfica, mas precisa gerar uma saída de dados processados ​​(mesmo que o usuário não os veja).

A linguagem usada pelo Bash é definida por seu próprio intérprete e combina a sintaxe de outros Shells, como o Korn Shell (ksh) ou o C Shell (csh). Muitos dos comandos geralmente usados ​​no console também podem ser usados ​​em scripts, exceto aqueles que pertencem estritamente a uma distribuição específica.

Estrutura de um Script

Para começar, devemos ter um editor de texto e vontade de programar. Os arquivos que salvamos com extensão .sh podem ser executados (ou interpretados) pelo console, desde que a primeira linha seja a seguinte:

#! / Bin / bash

Isso diz ao sistema para usar o console para executar o arquivo. Além disso, o caractere # permite que você escreva comentários. Para criar o exemplo mais simples, adicionamos mais uma linha, vista na imagem a seguir:

O comando echo exibe uma mensagem na tela, neste caso o típico "Hello world!" Se o salvarmos e o executarmos com o console, veremos o resultado.

comandos básicos

Os comandos a seguir são comuns e muito úteis para qualquer tipo de programa. Esclarecemos que existem muitos mais, mas por agora vamos cobrir o seguinte.

Aliases: permite que uma string de palavras seja substituída por uma mais curta, permitindo a redução do código.

#criar um alias chamado per com o endereço da pasta #Downloads alias per = '/ home / user / Downloads' # Sempre que quisermos usá-lo, só temos que chamar # a nova palavra por #Para destruir esse alias, nós usar unalias unalias por

break: permite que você saia imediatamente de um for, while, until ou selecione loop (estudaremos loops em detalhes posteriormente)

#Crie um loop que irá atribuir os números de 1 a 5 #para cada "volta do loop" para o contador em 1 2 3 4 5 fazemos # Imprimimos o valor atual da variável #contador, que é analisado pelo caractere $ echo "$ counter” #Se o valor do contador for igual a 3 if [$ counter –eq 3] then #O break sai do loop para break fi feito

continue - Semelhante a break, exceto que ignora o loop atual e vai para o próximo.

#Crie um loop que irá atribuir os números de 1 a 5 #para cada "volta do loop" para o contador em 1 2 3 4 5 faça #Se o valor do contador for igual a 3 if [$ counter –eq 3] then # Continuar evita que o restante do ciclo atual seja analisado saltando para a próxima rodada, ou seja, o #valor 3 não será impresso. continue fi echo "$ counter" concluído

declare: declara variáveis ​​e atribui valores a elas, assim como o conjunto de textos (funcionam da mesma maneira). Podemos combiná-lo com algumas opções: -i declara inteiros; -r para variáveis ​​somente leitura, cujo valor não pode ser alterado; –A para matrizes ou “matrizes”; -f para funções; -x para variáveis ​​que podem ser "exportadas" fora do ambiente do próprio script.

declara –i num = 12 declara –x pi = 3.14

help: mostra a ajuda para um comando específico.

jobs: mostra os processos em execução.

#Com –c mostramos o nome dos comandos, com –p # o pid (id do processo) de cada processo. jobs -cp

let: avaliar uma expressão aritmética

deixe a = 11 deixe a = a + 5 #Finalmente imprimimos o valor de a que é 16 echo "11 + 5 = $ a"

local: cria variáveis ​​locais, que devem ser utilizadas preferencialmente em funções do próprio script para evitar erros. Você pode usar as mesmas funções do comando declare.

v1 local = "Esta é uma variável local"

logout: permite o logout de um Shell completamente; útil para os casos em que trabalhamos com mais de uma janela de shell, em que o comando exit permitirá que apenas uma janela seja encerrada por vez.

printf: permite imprimir dados e formatá-los. Tem muitas opções, por isso vamos citar algumas.

#% f imprime como um número flutuante, n para uma nova # linha printf "% fn" 5 5.000000 # & d permite passar números decimais como argumentos printf "Existem% d pedidos avaliados em% d dólares.n" 20 500 Existem 20 pedidos avaliados em 500 dólares.

read: lê uma linha da entrada padrão (módulo usado para carregar dados através do teclado, por exemplo). Podemos passar opções como: -t para dar um tempo limite de leitura; -a para que cada palavra seja atribuída a uma posição no array aname; -d para usar um delimitador que será escrito no final da linha; entre outros.

echo "Digite seu nome e pressione ENTER" #Leia o nome da variável, leia o nome echo "Seu nome é $ name"

tipo: descreve um comando e seu comportamento. Pode ser útil descobrir as definições de dados para cada comando.

type –a '[' #type nos diz que [é um comando interno do Shell [é um comando interno do Shell # -a permite encontrar os diretórios que contêm # um executável com o nome escrito. [é / usr / bin / [

ulimit: limita o acesso e a utilização de determinados recursos do sistema a processos, ideal para programas que permitem alterações administrativas ou que se destinam a diferentes tipos de usuários. Ao definir um limite, escrevemos um número que representa os kilobytes do limite.

#Vemos nossos limites atuais ulimit –a # -f permite limitar os usuários a não serem capazes de # criar arquivos maiores que 512000 Kb (500 #Mb) ulimit –f 512000 # -v limita a memória virtual do processo. ulimit –v 512000

esperar: aguarde a realização de um determinado processo ou trabalho para continuar.

#O script aguarda que o processo do pid # 2585 seja realizado

aguarde 2585

Outros comandos úteis que podemos adicionar aos scripts são representados por símbolos.

!!: execute o último comando novamente

! wer: executa o último comando que começou com a expressão “wer”.

'==', '! =', '>', '<', '> =' e '<=': operadores relacionais.

|: O operador OR geralmente usado para unir duas expressões regulares.

: comando de escape que permite formatar expressões. Por exemplo: a para um alerta sonoro, n para nova linha, b para backspace, etc.

Obrigado Juan Carlos Ortiz!