Está en la página 1de 18

Comandos bash

Utiliza este comando para comprobar la lista de shells disponibles en tu sistema


operativo Unix:
cat /etc/shells
La salida debería mostrar una lista como ésta:
/bin/bash
/bin/sh
/bin/tcsh
/bin/csh
Ejecución

Cada script de shell Bash debe comenzar con #! seguido de la ruta absoluta al
intérprete bash. Para ver la ruta, introduce este comando:
which bash
Debería producir el siguiente resultado:
/bin/bash
Esta es la ruta estándar al intérprete bash en la mayoría de los sistemas operativos
Unix. Para que el shell sepa que debe ejecutar comandos utilizando el intérprete
bash, inicia el script con esta línea:
#!/bin/bash

¡Importante! Si deseas ejecutar scripts bash en un servidor privado virtual, conéctate


a él a través de un cliente SSH.

El siguiente paso es escribir y compilar los comandos en un archivo .sh utilizando un


editor de texto. Necesitarás un editor de texto Unix como VIM o GNU Nano. En este
tutorial, usaremos el editor de texto Nano para crear el archivo introduciendo este
comando:
nano function.sh

Esto abrirá un nuevo archivo .sh para que lo edites. Comienza


escribiendo #!/bin/bash seguido de los comandos bash.

¡Importante! Cuando hayas terminado de utilizar el editor de texto Nano,


pulsa Ctrl+X para cerrarlo y, a continuación, pulsa Y e Intro para guardar los
cambios.
Comandos básicos para tu primer script bash
1.- comentarios
Los comentarios ofrecen una descripción de determinadas líneas del script. El
terminal no analiza los comentarios durante la ejecución, por lo que no afectarán a la
salida.
Hay dos formas de añadir comentarios a un script. El primer método consiste en
escribir # al principio de un comentario de una sola línea.
#!/bin/bash
#Command below prints a Hola mundo text
echo “¡Hola, mundo!”

El segundo método consiste en utilizar : seguido de ‘. Este método funciona para


comentarios de varias líneas.
#!/bin/bash
read a
:‘
The following commands prints
¡Hola, mundo!

echo “¡Hola, mundo!”
2.- variables
Las variables son símbolos que representan un carácter, cadenas de caracteres o
números. Basta con escribir el nombre de la variable en una línea de órdenes para
utilizar las cadenas o números definidos.
Para asignar una variable, escribe el nombre de la variable y el valor de la cadena
como aquí:
testvar="Esta es una variable de prueba"
En este caso, testvar es el nombre de la variable, y Esta es una variable de
prueba es el valor de la cadena. Al asignar una variable, recomendamos utilizar un
nombre de variable que sea fácil de recordar y que represente su valor.
Para leer el valor de la variable en la línea de comandos, utiliza el símbolo $ antes del
nombre de la variable. Echa un vistazo al siguiente ejemplo:
#!/bin/bash
testvar="Esta es una variable de prueba"
echo $testvar
La segunda línea de comando utiliza echo para imprimir el valor de testvar. La salida
de ese script será:
Esta es una variable de prueba

Veamos cómo introducir un valor de cadena mediante el comando read y hacer que el
script compare dos valores de cadena de variables diferentes:

#!/bin/bash
echo "Introduce un número"
read a #The user input in this command line will be stored as variable a
b=50 #The value of variable b
if [[$a -eq $b]]
then
echo "Mismo número"
else
echo "Número diferente"
fi
La salida de ese script debería ser la siguiente:
Introduce un número
20
Número diferente

Observa que la línea 3 es el valor que se convierte en la variable a.


El script compara la variable a con el valor 20 y la variable b con el valor 50. Como
los valores son diferentes, el script imprime Número diferente.
Sin embargo, si el usuario introduce 50, ésta será la salida:
Introduce un número
50
Mismo número

3.- comando echo


echo es un comando muy conocido y utilizado en muchos lenguajes de
programación. Hay varias opciones que puedes utilizar con echo para imprimir la
salida en el terminal.
El primer uso de echo, y el más común, es la salida de texto estándar:
#!/bin/bash
echo "¡Hola, mundo!"
La salida de ese comando es ¡Hola, mundo! Por defecto, cuando se utiliza el
comando echo de esta forma, el terminal introducirá una nueva línea debajo. Si
quieres utilizar echo para una salida sin una nueva línea, puedes hacerlo usando -n.
#!/bin/bash
echo -n "¡Hola, mundo!"
Utiliza la opción \n para introducir un salto de línea en la salida. Para activar la barra
invertida (\), debes incluir -e.
#!/bin/bash
echo -e "¡Hola, \nmundo!"
La salida de ese comando tendrá el siguiente aspecto:
¡Hola,
mundo!
La opción \t añade un espacio de tabulación horizontal:
#!/bin/bash
echo -e "¡Hola, mundo!"
La salida de este comando moverá el texto a la derecha:
¡Hola, mundo!
También puedes combinar varias opciones. Por ejemplo, combina \n y \t para dividir el
texto en líneas y ubicarlo a la derecha:
#!/bin/bash
echo -e “\n\t¡Hola, \n\tmundo!”
La salida de ese comando tendrá el siguiente aspecto:
¡Hola,
mundo!
4.- funciones

escribir dos funciones con varios comandos echo:


#!/bin/bash
hola_mundo () {
echo “¡Hola, mundo!”
echo “Esta es una variable de prueba”
}
print_message () {
echo “Aprendamos programación Bash”
echo “Disfruta este tutorial”
}

Ten en cuenta que escribir las funciones como en el ejemplo anterior sólo las define y
no ejecuta los comandos contenidos. Para ejecutar una función, introduce su nombre
en la línea de comandos.
Ahora, usemos los dos ejemplos anteriores en una función bash completa, incluyendo
su ejecución:
#!/bin/bash
#Define a hola mundo function
hola_mundo () {
echo “¡Hola, mundo!”
echo “Esta es una variable de prueba”
}
#Define a print message function
print_message () {
echo “Aprendamos programación Bash”
echo “Disfruta este tutorial”
}
#Execute the hello world function
hola_mundo
#Execute the print message function
print_message
Este es el resultado del script anterior:
¡Hola, mundo!
Esta es una variable de prueba
Aprendamos programación Bash
Disfruta este tutorial

5.- Bucles

Los comandos bash de bucle son útiles si deseas ejecutar comandos varias veces.
Hay tres tipos de ellos que se pueden ejecutar en bash: for, while y until.
El bucle for ejecuta el comando para una lista de elementos:
#!/bin/bash
for item in [lista]
do
[comandos]
done
El siguiente ejemplo utiliza un bucle for para imprimir todos los días de la semana:
#!/bin/bash
for days in Lunes Martes Miércoles Jueves Viernes Sábado Domingo
do
echo “Day: $days”
done
En la línea 2, «days» se convierte automáticamente en una variable, cuyos valores
son los nombres de los siguientes días. Luego, en el comando echo, utilizamos el
símbolo $ para llamar a los valores de la variable.
La salida de ese script será la siguiente:
Day: Lunes
Day: Martes
Day: Miércoles
Day: Jueves
Day: Viernes
Day: Sábado
Day: Domingo

El siguiente tipo de bucle es while. El script evaluará una condición. Si la condición


es verdadera, seguirá ejecutando los comandos hasta que la salida ya no cumpla la
condición definida.
Veamos un ejemplo sencillo en el que intervienen una variable y un operador de
incremento, denominado ((++)):
#!/bin/bash
i=0
while [ $i -le 5 ]
do
echo $i
((i++))
done
La variable comienza con un valor 0 y el operador de incremento la aumentará en
uno. La condición establecida es menor o igual a cinco, por lo que el comando
seguirá iterando hasta que la salida llegue a cinco. La salida de ese script será la
siguiente:
0
1
2
3
4
5
El último tipo de bucle, until, es el opuesto a while. Repetirá el comando hasta que la
condición se convierta en verdadera.
Si queremos la misma salida que en el ejemplo while anterior utilizando el
bucle until, podemos escribir el script de la siguiente manera:
#!/bin/bash
i=0
until [ $i -gt 5 ]
do
echo $i
((i++))
done
Ahora, este comando se reproducirá hasta que el valor de salida llegue a cinco. La
salida será la misma que en nuestro ejemplo con el bucle while:
0
1
2
3
4
5
Ejecución hasta el momento
6.- declaraciones condicionales
Muchos lenguajes de programación, incluido bash, utilizan sentencias condicionales
como if, then y else para la toma de decisiones. Ejecutan comandos e imprimen
salidas dependiendo de las condiciones.
La sentencia if va seguida de una expresión condicional. Después, le sigue then y el
comando para definir la salida de la condición. El script ejecutará el comando si la
condición expresada en la sentencia if es verdadera.
Sin embargo, si deseas ejecutar un comando diferente si la condición es falsa, añade
una sentencia else al script y síguela con el comando.
Echemos un vistazo a las sentencias if, then y else. Antes de la sentencia,
incluiremos una variable para que el usuario pueda introducir un valor:
#!/bin/bash
echo “Ingresa un número”
read num
if [[$num -gt 10]]
then
echo “El número es mayor a 10”
else
echo “El número es menor a 10”
Ejecución

7.- lectura y escritura de archivos


Existen varios métodos para leer un archivo, siendo el comando cat el más popular.
Ten en cuenta que este comando lee todo el contenido del archivo.
Para leer el contenido línea por línea, utiliza el comando read y un bucle. Antes de
escribir un script para leer un fichero, asegúrate primero de que el fichero existe.
En el siguiente ejemplo, tenemos un archivo to-do.txt que contiene una lista de
tareas pendientes:
Responder email
Finalizar informe
Llamar clientes
Evaluar equipo
Utilizaremos los comandos cat y read en nuestra función bash para leer e imprimir el
contenido del archivo to-do.txt. La primera parte del script utilizará el comando cat,
mientras que la segunda parte utilizará el comando read en un bucle.
#!/bin/bash
echo “Leyendo el archivo utilizando el comando cat”
content=’cat to-do.txt’
echo $content
echo “Leyendo el archivo utilizando el comando leer y bucle”
filename=’to-do.txt’
while read line
do
echo $line
done<$filename
La salida del script será la siguiente:
Leyendo el archivo utilizando el comando cat
Responder email Finalizar informe Llamar clientes Evaluar equipo
Leyendo el archivo utilizando el comando leer y bucle
Responder email
Finalizar informe
Llamar clientes
Evaluar equipo

Ejecución
Para escribir la salida de un comando en un archivo, utiliza los operadores de
redirección, representados con los símbolos > y >>, y acompáñalos del nombre del
archivo:
output > nombre del archivo
output >> nombre del archivo
Ten cuidado al elegir el operador. Si el archivo existe, el operador > sobrescribirá su
contenido con una cadena de longitud cero. Esto significa que perderás el contenido
del archivo existente. Si el nombre de archivo introducido no existe, lo creará.
El operador >>, por otro lado, añadirá la salida al archivo dado.
Aquí una simple redirección para escribir la salida en un archivo de texto:
echo "¡Hola, mundo!" >> hola_mundo.txt
La redirección también funciona con el comando read para escribir cualquier entrada
del usuario. Este ejemplo de script añadirá el valor introducido en el archivo name.txt:
#!/bin/bash
echo “Ingresa tu nombre”
read Name
echo $Name >> nombre.txt
Como el script redirige la salida de la variable al archivo, no verás ninguna salida
impresa. Para ver la salida imprimiendo el contenido del archivo, añade la siguiente
línea de comando para leer el archivo:
echo 'cat nombre.txt'
Asegúrate de que tienes permiso para leer y escribir en el archivo para evitar el error
de permiso denegado. Si deseas añadir la salida a archivos existentes, asegúrate de
escribir los nombres de archivo correctos.

Ejecución

También podría gustarte