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.
10 comentarios, deixa os teus
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.
Boa contribución! Estupendo!
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.
Boa cita! Grazas!
: @ 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
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
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
Casualmente, na universidade estamos a usar script bash polo que os datos son 10, moi ben.
sería boa unha versión en pdf para descargar !! 😀
Moi bo sitio. Por fin atopei algo útil. Grazas.