Búsqueda de sitios web

Navegando por el mundo de las secuencias de comandos BASH de Linux - Parte III


Los siguientes artículos anteriores de la serie 'Shell Scripting' fueron muy apreciados y por eso escribo este artículo para ampliar el interminable proceso de aprendizaje.

  1. Comprender los consejos básicos del lenguaje de secuencias de comandos Shell de Linux: Parte I
  2. 5 scripts de Shell para que los principiantes de Linux aprendan a programar Shell - Parte II
Palabras clave de bash

Una palabra clave es una palabra o símbolo que tiene un significado especial para un lenguaje informático. Los siguientes símbolos y palabras tienen significados especiales para Bash cuando no están entre comillas y son la primera palabra de un comando.

! 			esac 			select 		} 
case 			fi 			then 		[[ 
do 			for 			until 		]] 
done 			function 		while 		elif
if 			time 			else 		in 		{

A diferencia de la mayoría de los lenguajes informáticos, Bash permite que se utilicen palabras clave como nombres de variables, aunque esto puede dificultar la lectura de los scripts. Para que los scripts sean comprensibles, no se deben utilizar palabras clave para los nombres de variables.

Un comando se implementa en Shell como $(comando). Es posible que tengas que incluir la ruta completa del comando. por ejemplo, $ (/bin/date), para una ejecución correcta.

Es posible que conozca la ruta de un programa específico usando el comando 'dónde está'. por ejemplo, dónde está la fecha

[root@tecmint /]# whereis date
date: /bin/date /usr/share/man/man1/date.1.gz

Es suficiente por ahora. No hablaremos mucho sobre estas teorías ahora. Llegando a guiones.

Mover el directorio de trabajo actual

Pase del directorio de trabajo actual a cualquier nivel superior simplemente proporcionando el valor numérico al final del script mientras se ejecuta.

#! /bin/bash 
LEVEL=$1 
for ((i = 1; i <= LEVEL; i++)) 
do 
CDIR=../$CDIR 
done 
cd $CDIR 
echo "You are in: "$PWD 
exec /bin/bash

Guarde los códigos anteriores como "up.sh", en su escritorio. Hazlo ejecutable (chmod 755 up.sh). Correr:

./up.sh 2 (moverá el directorio de trabajo actual a dos niveles más arriba).
./up.sh 4 (moverá el directorio de trabajo actual a cuatro niveles más arriba).

Uso y área de aplicación

En scripts más grandes que contienen una carpeta dentro de una carpeta dentro... que contiene bibliotecas, binarios, iconos, ejecutables, etc. en diferentes ubicación. Usted, como desarrollador, puede implementar este script para moverse a la ubicación deseada de forma muy automatizada.

Nota: For es un bucle en el script anterior y continuará ejecutándose hasta que los valores sean verdaderos para el bucle.

Salida de muestra
[root@tecmint /]# chmod 755 up
[root@tecmint /]# ./up.sh 2
You are in: /

[root@tecmint /]# ./up.sh 4 
You are in: / 

[root@tecmint /]#

Descargar up.sh

Crear un archivo o carpeta aleatorio

Cree un archivo (carpeta) aleatorio sin posibilidad de duplicación.

#! /bin/bash

echo "Hello $USER";
echo "$(uptime)" >> "$(date)".txt
echo "Your File is being saved to $(pwd)"

Este es un script simple pero su funcionamiento no es tan simple.

  1. 'echo': Imprime todo lo escrito entre comillas.
  2. '$': Es una variable de shell.
  3. >>‘: la salida se redirige a la salida del comando fecha seguido de la extensión txt.

Sabemos que el resultado del comando fecha es fecha y hora en hora, minuto. segundo junto con el año. Por lo tanto, podríamos obtener resultados con un nombre de archivo organizado sin posibilidad de duplicación del nombre de archivo. Podría resultar muy útil cuando el usuario necesite el archivo creado con marca de tiempo para referencia futura.

Salida de muestra
[root@tecmint /]# ./randomfile.sh  
Hello server 
Your File is being saved to /home/server/Desktop

Puede ver el archivo creado en el escritorio con la fecha de hoy y la hora actual.

[root@tecmint /]# nano Sat\ Jul\ 20\ 13\:51\:52\ IST\ 2013.txt 
13:51:52 up  3:54,  1 user,  load average: 0.09, 0.12, 0.08

A continuación se proporciona una implementación más detallada del script anterior, que funciona según el principio anterior y es muy útil para recopilar información de red de un servidor Linux.

Descargar archivo aleatorio.sh

Script para recopilar información de la red

Reúne información de la red en un servidor Linux. El script es demasiado grande y no es posible publicar el código completo y el resultado del script aquí. Por lo tanto, es mejor que pueda descargar el script utilizando el siguiente enlace de descarga y probarlo usted mismo.

Nota: Es posible que necesite instalar el paquete lsb-core y otros paquetes y dependencias necesarios. Apt o Yum los paquetes requeridos. Obviamente necesitas ser root para ejecutar el script porque la mayoría de los comandos utilizados aquí están configurados para ejecutarse como root.

Salida de muestra
[root@tecmint /]# ./collectnetworkinfo.sh  

The Network Configuration Info Written To network.20-07-13.info.txt. Please email this file to your_name@service_provider.com. ktop

Puede cambiar la dirección de correo electrónico anterior en su secuencia de comandos para que se la envíen por correo. Se puede ver el archivo generado automáticamente.

Descargar Collectnetworkinfo.sh

Script para convertir MAYÚSCULAS a minúsculas

Un script que convierte MAYÚSCULAS a minúsculas y redirige la salida a un archivo de texto “small.txt” que se puede modificar según sea necesario.

#!/bin/bash 

echo -n "Enter File Name : " 
read fileName 

if [ ! -f $fileName ]; then 
  echo "Filename $fileName does not exists" 
  exit 1 
fi 

tr '[A-Z]' '[a-z]' < $fileName >> small.txt

Este script anterior puede convertir las mayúsculas y minúsculas de un archivo de cualquier longitud con un solo clic de mayúsculas a minúsculas y viceversa si es necesario, con pocas modificaciones.

Salida de muestra
[root@tecmint /]# ./convertlowercase.sh  
Enter File Name : a.txt 

Initial File: 
A
B
C
D
E
F
G
H
I
J
K
...

Salida del nuevo archivo (small.txt):

a
b
c
d
e
f
g
h
i
j
k
...

Descargar convertlowercase.sh

Programa de calculadora simple

#! /bin/bash 
clear 
sum=0 
i="y" 

echo " Enter one no." 
read n1 
echo "Enter second no." 
read n2 
while [ $i = "y" ] 
do 
echo "1.Addition" 
echo "2.Subtraction" 
echo "3.Multiplication" 
echo "4.Division" 
echo "Enter your choice" 
read ch 
case $ch in 
    1)sum=`expr $n1 + $n2` 
     echo "Sum ="$sum;; 
        2)sum=`expr $n1 - $n2` 
     echo "Sub = "$sum;; 
    3)sum=`expr $n1 \* $n2` 
     echo "Mul = "$sum;; 
    4)sum=`expr $n1 / $n2` 
     echo "Div = "$sum;; 
    *)echo "Invalid choice";; 
esac 
echo "Do u want to continue (y/n)) ?" 
read i 
if [ $i != "y" ] 
then 
    exit 
fi 
done
Salida de muestra
[root@tecmint /]# ./simplecalc.sh 

Enter one no. 
12 
Enter second no. 
14 
1.Addition 
2.Subtraction 
3.Multiplication 
4.Division 
Enter your choice 
1 
Sum =26 
Do u want to continue (y/n)) ? 
y
1.Addition 
2.Subtraction 
3.Multiplication 
4.Division 
Enter your choice 
3 
mul = 14812
Do u want to continue (y/n)) ? 
n

Descargar simplecalc.sh

Entonces viste lo fácil que fue crear un programa potente como realizar cálculos de una forma tan sencilla. No es el fin. Elaboraremos al menos un artículo más de esta serie, que cubrirá una perspectiva amplia desde el punto de vista de la administración.

Eso es todo por ahora. Siendo el lector y el mejor crítico, no olvides decirnos cuánto y qué disfrutaste en este artículo y qué quieres ver en el futuro. Cualquier pregunta es bienvenida en comentarios. Hasta entonces, manténgase saludable, seguro y estado. Danos Me gusta y Compártenos y ayúdanos a difundir.