GNU/Linux >> Tutoriales Linux >  >> Linux

Tutorial de introducción a Bash Scripting con 5 ejemplos prácticos

De manera similar a nuestra serie en curso Unix Sed y Unix Awk, publicaremos varios artículos sobre Bash scripting, que cubrirá todas las técnicas de scripting bash con ejemplos prácticos.

Shell es un programa que interpreta los comandos del usuario. Los comandos son ingresados ​​directamente por el usuario o se leen desde un archivo llamado shell script.

Shell se llama como un shell interactivo, cuando lee la entrada del usuario directamente.

Shell se llama como un shell no interactivo, cuando lee comandos de un archivo y los ejecuta. En este caso, el shell lee cada línea de un archivo de secuencia de comandos de arriba a abajo y ejecuta cada comando como si el usuario lo hubiera escrito directamente.

Imprima el valor de la variable de shell incorporada $-, para saber si el shell es interactivo o no interactivo.

# echo $-
himBH

Nota:la variable $- contiene una "i" cuando el shell es interactivo .

Unix tiene variedad de Shells. Bourne shell (sh), Bourne nuevamente shell (bash), C shell (csh), Korn shell (ksh), Tenex C shell (tcsh). Use los comandos de Unix which o whereis para averiguar dónde se encuentra un shell específico, como se muestra a continuación.

# which bash
/bin/bash

# whereis bash
bash: /bin/bash /usr/share/man/man1/bash.1.gz

Puede cambiar entre los shells, escribiendo el nombre del shell. Por ejemplo, escriba csh para cambiar a shell C.

Escritura y ejecución de script de shell

Ejemplo 1. Script Hello World Bash

  1. Cree una secuencia de comandos escribiendo las siguientes dos líneas en un archivo con su editor favorito.
  2. $ cat helloworld.sh
    #!/bin/bash
    echo Hello World
  3. Puede elegir cualquier nombre para el archivo. El nombre del archivo no debe ser el mismo que ninguno de los comandos integrados de Unix.
  4. El guión siempre comienza con los dos caracteres '#!', que se llama she-bang. Esto es para indicar que el archivo es un script y debe ejecutarse usando el intérprete (/bin/bash) especificado por el resto de la primera línea del archivo.
  5. Ejecute el script como se muestra a continuación. Si tiene problemas para ejecutar un script de shell, consulte el tutorial de ejecución de scripts de shell
  6. $ bash helloworld.sh
    Hello World
  7. Cuando ejecuta el comando "bash helloworld.sh", inicia el shell no interactivo y le pasa el nombre del archivo como argumento.
  8. La primera línea le dice al sistema operativo qué shell generar para ejecutar el script.
  9. En el ejemplo anterior, el intérprete bash interpreta el script y ejecuta los comandos uno por uno de arriba a abajo.
  10. Incluso puede ejecutar el script, sin "bash" inicial por:
    • Cambie el permiso en el script para permitirle a usted (Usuario) ejecutarlo, usando el comando "chmod u+x helloworld.sh".
    • El directorio que contiene el script debe incluirse en la variable de entorno PATH. Si no se incluye, puede ejecutar el script especificando la ruta absoluta del script.
  11. echo es un comando que simplemente genera el argumento que le damos. También se usa para imprimir el valor de la variable.

Bash-Archivos de inicio

Como discutimos anteriormente en nuestra secuencia de ejecución para .bash_profile y el artículo de archivos relacionados, cuando bash se invoca como un shell interactivo, primero lee y ejecuta comandos desde /etc/profile. Si /etc/profile no existe, lee y ejecuta los comandos de ~/.bash_profile, ~/.bash_login y ~/.profile en el orden indicado. La opción –noprofile se puede usar cuando se inicia el shell para inhibir este comportamiento.

Normalmente, su bash_profile ejecuta ~/.bashrc. Si lo desea, puede mostrar un mensaje de bienvenida. Esto solo se ejecuta cuando inicia sesión por primera vez. Puede exportar las variables lo que quiera, y puede establecer los alias que se ejecutarán y estarán disponibles una vez que abra el shell. Cuando sale un shell de inicio de sesión, Bash lee y ejecuta comandos desde el archivo ~/.bash_logout.

Ejemplo 2. Imprima un mensaje de bienvenida cuando inicie sesión

Escriba los siguientes contenidos en su archivo bash_profile. Si el archivo no existe, cree un archivo con el siguiente contenido.

$ cat ~/.bash_profile
hname=`hostname`
echo "Welcome on $hname."

Cuando inicie sesión en un shell interactivo, verá los mensajes de bienvenida como se muestra a continuación.

login as: root
root@dev-db's password:
Welcome on dev-db

Ejemplo 3. Imprimir información relacionada con el sistema

Cuando inicia sesión en un shell interactivo, puede mostrar el nombre del kernel instalado en el servidor, la versión de bash, el tiempo de actividad y el tiempo en el servidor.

$cat ~/.bash_profile
hname=`hostname`
echo "Welcome on $hname."

echo -e "Kernel Details: " `uname -smr`
echo -e "`bash --version`"
echo -ne "Uptime: "; uptime
echo -ne "Server time : "; date

Cuando inicia un shell interactivo, imprime el mensaje como se muestra a continuación.

login as: root
root@dev-db's password:
Welcome on dev-db

Kernel Information:  Linux 2.6.18-128 x86_64
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
Uptime:  11:24:01 up 21 days, 13:15,  3 users,  load average: 0.08, 0.18, 0.11
Server time : Tue Feb 22 11:24:01 CET 2010

Ejemplo 4. Imprimir los últimos detalles de inicio de sesión

Si varios usuarios utilizan la misma máquina con el mismo inicio de sesión, los detalles más útiles serían detalles como la máquina desde la que se produjo el último inicio de sesión y la hora a la que iniciaron sesión. Este ejemplo imprime los últimos detalles de inicio de sesión durante el inicio de un shell interactivo.

$ cat ~/.bash_profile
hname=`hostname`
echo "Welcome on $hname."

echo -e "Kernel Details: " `uname -smr`
echo -e "`bash --version`"
echo -ne "Uptime: "; uptime
echo -ne "Server time : "; date

último registro | grep "raíz" | awk {'print "Último inicio de sesión desde:"$3

print "Fecha y hora del último inicio de sesión:",$4,$5,$6,$7,$8,$9;}'
Durante el inicio, recibirá el mensaje que se muestra a continuación.

login as: root
root@dev-db's password:
Welcome on dev-db

Kernel Information:  Linux 2.6.18-128 x86_64
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
Uptime:  11:24:01 up 21 days, 13:15,  3 users,  load average: 0.08, 0.18, 0.11
Server time : Tue Feb 22 11:24:01 CET 2010

Último inicio de sesión desde:sasikala-laptop

Fecha y hora del último inicio de sesión:martes 22 de febrero 11:24:01 +0100 2010

Ejemplo 5. Exportar variables y establecer alias durante el inicio

Los comandos más comunes que utilizará en sus archivos .bashrc y .bash_profile son el comando de exportación y alias.

Un alias es simplemente sustituir un fragmento de texto por otro. Cuando ejecuta un alias, simplemente reemplaza lo que escribió con lo que es igual al alias. Por ejemplo, si desea establecer un alias para el comando ls para enumerar los archivos/carpetas con los colores, haga lo siguiente:

alias ls 'ls --color=tty'

Si agrega este comando a uno de los archivos de inicio, puede ejecutar el comando ls, donde se reemplazará automáticamente con el comando ls –color=tty.

El comando de exportación se utiliza para establecer una variable de entorno. El sistema u otras aplicaciones utilizan varias variables de entorno. Simplemente son una forma de establecer parámetros que cualquier aplicación/secuencia de comandos puede leer. Si establece una variable sin el comando de exportación, esa variable solo existe para ese proceso en particular.

En el siguiente ejemplo, está exportando la variable de entorno HISTSIZE. La línea que comienza con # es una línea de comentario.

$ cat /etc/profile
alias ls 'ls --color=tty'

# Setup some environment variables.
export HISTSIZE=1000

PATH=$PATH:$HOME/bin:/usr/bin:/bin/usr:/sbin/etc

export PATH

export SVN_SH=${SVN_RSH-ssh}

Linux
  1. ¿Qué intérprete de Shell ejecuta un script sin Shebang?

  2. Tutorial de Awk:Entienda las Variables de Awk con 3 Ejemplos Prácticos

  3. Tutorial de estado de salida de Bash Shell con ejemplos prácticos

  4. El último tutorial de Bash Array con 15 ejemplos

  5. 15 útiles comandos integrados de Bash Shell (con ejemplos)

Bash Scripting - Comando Printf explicado con ejemplos

Bash Scripting:matriz asociativa explicada con ejemplos

Bash Scripting:matriz indexada explicada con ejemplos

Tutorial paso a paso de secuencias de comandos de Shell

Tutorial de funciones de Bash Shell con 6 ejemplos prácticos

Bash Script for Loop explicado con ejemplos