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.
Ó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!
Boa contribuição! Ótimo!
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.
Bom encontro! Obrigado!
: @ 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
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
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
Coincidentemente, na faculdade estamos usando script bash, então os dados são 10, muito bons!
uma versão em pdf para baixar seria bom !! 😀
Site muito bom. Finalmente encontrei algo útil. Obrigado.