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!

Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   Médio difícil dito

    Ótimo! Enfim 2 comentários: A tag Ubuntu é meio demais, pois generaliza algo que é genérico. E se esses tutoriais continuarem avançando, seria bom se eles estivessem vinculados entre si….
    Fora isso, esse movimento é interessante!

  2.   Vamos usar Linux dito

    Boa contribuição! Ótimo!

  3.   Giovanni Escobar Sosa dito

    Faltam apenas referências para quem quiser se aprofundar no assunto. Alguns bons, embora não tão fáceis de encontrar em nossos países, são
    - Um guia prático para comandos, editores e programação de shell do Linux, Mark Sobell (Capítulo 8)
    - Pro Bash Programming, Chris FA Johnson (embora seja para quem tem outras referências ou um pouco mais de conhecimento).

    Bom artigo.

  4.   Vamos usar Linux dito

    Bom encontro! Obrigado!

  5.   Patrício Dorantes Jamarne dito

    : @ A função "logar como" excluiu meu comentário anterior, então vou resumi-lo melhor:
    empregos -cp
    bash: jobs: -c: opção inválida
    jobs: uso: jobs [-lnprs] [jobspec…] ou jobs -x command [args]

    -eq -gt -lt não aceita variáveis ​​de ponto decimal, entre fórum e fórum descobri que bc é um bom aliado:
    if [`echo 9.999> 10 | bc` -eq 1]; então
    echo "9.999 é maior que 10, certifique-se de que seu processador ainda está funcionando"
    outro
    echo «9.999 não é maior que 10, tudo funciona normalmente
    fi

  6.   Não do Brooklyn dito

    Esta postagem resume muito bem todas as generalidades do script bash:
    http://www.aboutlinux.info/2005/10/10-seconds-guide-to-bash-shell.html

    Neste site você encontrará muitas perguntas e respostas sobre as peculiaridades do bash:
    http://unix.stackexchange.com/questions/tagged/bash

    Aqui estão alguns scripts muito legais e, ei, você pode aprendê-los lendo os scripts de outras pessoas:
    http://snipplr.com/search.php?q=bash&btnsearch=go

  7.   Não do Brooklyn dito

    Você está certo com o que diz, exceto para bash. Todo sistema que vi tem bash em / bin / bash.

    Mas para python, perl, ruby, etc, é bom usar isso. Eu faço

  8.   Guille dito

    Coincidentemente, na faculdade estamos usando script bash, então os dados são 10, muito bons!

  9.   alex eu vi dito

    uma versão em pdf para baixar seria bom !! 😀

  10.   Marco Antonio De Fuentes dito

    Site muito bom. Finalmente encontrei algo útil. Obrigado.