Programación en bash - parte 1

Aínda que xeralmente o usamos para operacións administrativas ou de xestión de ficheiros, o consola de Linux estende a súa funcionalidade moito máis alá dese propósito, permitíndonos programar scripts Esta guía non pretende ser unha referencia completa sobre a programación de Bash, senón unha introdución aos comandos e estruturas básicas, que nos permitirá ampliar a potencia do noso sistema GNU / Linux.

Que é un "Script"?

Basicamente dicimos que é un ficheiro que contén código escrito nunha determinada linguaxe de programación que o sistema usa para unha tarefa determinada. Non precisa ter unha entrada externa nin unha interface gráfica, pero si provoca unha saída de datos procesados ​​(aínda que o usuario non os vexa).

A linguaxe empregada por Bash defínea o seu propio intérprete e combina a sintaxe doutros Shells, como o Korn Shell (ksh) ou o C Shell (csh). Moitos dos comandos que se usan normalmente na consola tamén se poden empregar en scripts, agás os que pertencen estritamente a unha distribución particular.

Estrutura dun guión

Para comezar debemos ter un editor de texto e ganas de programar. Os ficheiros que gardamos cunha extensión .sh poden ser executados (ou interpretados) pola consola, sempre que a primeira liña sexa a seguinte:

#! / bin / bash

Isto dille ao sistema que use a consola para executar o ficheiro. Ademais, o carácter # permítelle escribir comentarios. Para crear o exemplo máis sinxelo engadimos unha liña máis, vista na seguinte imaxe:

O comando eco mostra unha mensaxe na pantalla, neste caso o típico "Ola mundo!" Se o gardamos e o executamos coa consola veremos o resultado.

Comandos Básicos

Os seguintes comandos son comúns e moi útiles para calquera tipo de programa. Aclaramos que hai moitos máis, pero polo de agora trataremos o seguinte.

Alias: permite substituír unha cadea de palabras por unha máis curta, permitindo a redución de código.

#create un alias chamado per co enderezo do cartafol #Downloads alias per = '/ home / usuario / Descargas' # Cada vez que o desexemos só temos que chamar a # nova palabra por # Para destruír ese alias, use unalias unalias per

break: permítelle saír inmediatamente dun bucle for, while, until ou seleccionar (estudaremos os bucles en detalle máis adiante)

#Crear un bucle que asignará os números do 1 ao 5 #para cada "xiro do bucle" para contador en 1 2 3 4 5 facer #Imprimimos o valor actual da variable #contador, que é analizado polo carácter $ echo "$ contador" #Se o valor do contador é igual a 3 se [$ contador –eq 3] entón # O salto sae do bucle para o descanso fi feito

continuar: semellante ao romper, excepto que ignora o bucle actual e vai ao seguinte.

#Crea un bucle que asignará os números do 1 ao 5 #para cada "xiro do bucle" para contador en 1 2 3 4 5 faga #Se o valor do contador é igual a 3 se [$ contador –eq 3] entón # Continuar impide que se analice o resto do ciclo actual saltando á seguinte rolda, é dicir, o # valor 3 non se imprimirá. continuar fi echo "$ counter" feito

declare: declara variables e asígnalles valores, como o composto (funcionan do mesmo xeito). Podemos combinalo con algunhas opcións: -i declara números enteiros; -r para variables de só lectura, cuxo valor non se pode cambiar; –A para matrices ou "matrices"; -f para funcións; -x para variables que se poden "exportar" fóra do contorno do propio script.

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

axuda: mostra axuda para un comando específico.

traballos: mostra os procesos en execución.

#Con –c amosamos o nome dos comandos, con –p # o pid (id do proceso) de cada proceso. empregos -cp

deixar: avaliar unha expresión aritmética

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

local: crea variables locais, que deben usarse preferentemente en funcións do propio script para evitar erros. Podes usar as mesmas funcións que o comando declare.

local v1 = "Esta é unha variable local"

saír: permite pechar a sesión completamente dun Shell; útil para casos nos que traballamos con máis dunha xanela de shell, nos que o comando exit só permitirá rematar unha xanela á vez.

printf: permite imprimir datos e formatalos. Ten moitas opcións, polo que mencionaremos algunhas.

#% f imprime como número flotante, n para a nova liña printf "% fn" 5 5.000000 # & d permite pasar números decimais como argumentos printf "Hai% d ordes valoradas en% d dólares. n" 20 500 Hai 20 pedidos valorados en 500 dólares.

ler: ler unha liña desde a entrada estándar (módulo empregado para cargar datos a través do teclado por exemplo). Podemos pasar opcións como: -t para dar un tempo límite de lectura; -a para que cada palabra se asigne a unha posición na matriz aname; -d para usar un delimitador que se escribirá ao final da liña; entre outros.

echo "Introduza o seu nome e prema ENTRAR" #Le o nome da variable ler nome echo "O seu nome é $ name"

tipo: describe un comando e o seu comportamento. Pode ser útil descubrir as definicións de datos para cada comando.

tipo –a '[' #type indícanos que [é un comando integrado en Shell [é un elemento integrado en Shell # -a permite atopar os directorios que conteñan # un executable co nome escrito. [é / usr / bin / [

ulimit: limita o acceso e uso de determinados recursos do sistema a procesos, ideal para programas que permiten cambios administrativos ou que están dirixidos a diferentes tipos de usuarios. Ao establecer un límite escribimos un número que representa os kilobytes do límite.

#Vemos os nosos límites actuais ulimit –a # -f permítelle limitar aos usuarios a non ser capaces de # crear ficheiros superiores a 512000 Kb (500 #Mb) ulimit –f 512000 # -v limita a memoria virtual do proceso. ulimit –v 512000

agarda: agarda a que se realice un determinado proceso ou traballo.

#O guión agarda a que se leve a cabo o proceso do pid # 2585

agarda 2585

Outros comandos útiles que podemos engadir aos scripts están representados por símbolos.

!!: volve executar o último comando

! wer: executa o último comando que comezou coa expresión "wer".

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

|: O operador OR normalmente adoitaba unir dúas expresións regulares.

: comando escape que permite formatar expresións. Por exemplo: a para unha alerta sonora, n para nova liña, b para retroceso, etc.

Grazas Juan Carlos Ortiz!

O contido do artigo adhírese aos nosos principios de ética editorial. Para informar dun erro faga clic en aquí.

10 comentarios, deixa os teus

Deixa o teu comentario

Enderezo de correo electrónico non será publicado. Os campos obrigatorios están marcados con *

*

*

  1. Responsable dos datos: Miguel Ángel Gatón
  2. Finalidade dos datos: controlar SPAM, xestión de comentarios.
  3. Lexitimación: o seu consentimento
  4. Comunicación dos datos: os datos non serán comunicados a terceiros salvo obrigación legal.
  5. Almacenamento de datos: base de datos aloxada por Occentus Networks (UE)
  6. Dereitos: en calquera momento pode limitar, recuperar e eliminar a súa información.

  1.   Medio Difícil dixo

    Estupendo! En fin, 2 comentarios: a etiqueta Ubuntu é a metade de máis, xa que xeneraliza algo xenérico. E se estes titoriais continúan avanzando, sería bo que estivesen ligados entre si ...
    Ademais diso, este movemento é interesante.

  2.   imos usar linux dixo

    Boa contribución! Estupendo!

  3.   Giovanni escobar sosa dixo

    Só faltan referencias para aqueles que queiran profundar no asunto. Algúns bos, aínda que non tan fáciles de atopar nos nosos países, son
    - Unha guía práctica para os comandos, editores e programación de Shell de Linux, Mark Sobell (capítulo 8)
    - Programación Pro Bash, Chris FA Johnson (aínda que isto é para os que teñen outras referencias ou un pouco máis de coñecemento).

    Bo artigo.

  4.   imos usar linux dixo

    Boa cita! Grazas!

  5.   Patricio Dorantes Jamarne dixo

    : @ A función "iniciar sesión como" eliminou o meu comentario anterior, así que vou resumilo máis adiante:
    empregos -cp
    bash: jobs: -c: opción non válida
    jobs: uso: jobs [-lnprs] [jobspec ...] ou comando jobs -x [args]

    -eq -gt -lt non aceptan variables de punto decimal, entre foro e foro descubrín que bc é un bo aliado:
    se [`eco 9.999> 10 | bc` -eq 1]; entón
    echo "9.999 é maior que 10, asegúrate de que o teu procesador aínda funciona"
    outro
    eco «9.999 non é maior que 10, todo funciona normalmente
    fi

  6.   Non de Brooklyn dixo

    Esta publicación resume moi ben todas as xeneralidades do script bash:
    http://www.aboutlinux.info/2005/10/10-seconds-guide-to-bash-shell.html

    Neste sitio atoparás moitas preguntas e respostas sobre as peculiaridades bash:
    http://unix.stackexchange.com/questions/tagged/bash

    Aquí tes algúns guións moi interesantes e, ben, podes aprendelos lendo guións doutras persoas:
    http://snipplr.com/search.php?q=bash&btnsearch=go

  7.   Non de Brooklyn dixo

    Tes razón co que dis, agás bash. Todos os sistemas que vin teñen bash en / bin / bash.

    Pero para Python, Perl, Ruby, etc., está ben usalo. fago

  8.   Guille dixo

    Casualmente, na universidade estamos a usar script bash polo que os datos son 10, moi ben.

  9.   Alex vin dixo

    sería boa unha versión en pdf para descargar !! 😀

  10.   Marco Antonio De Fuentes dixo

    Moi bo sitio. Por fin atopei algo útil. Grazas.