Navegando por el mundo de Linux Scripting BASH - Parte III


Los artículos anteriores de la serie "Shell Scripting" fueron muy apreciados y, por lo tanto, estoy escribiendo este artículo para extender el proceso interminable de aprendizaje.

  1. Understand Basic Linux Shell Scripting Language Tips – Part I
  2. 5 Shell Scripts for Linux Newbies to Learn Shell Programming – Part II

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 las palabras clave se utilicen 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. Es posible que deba incluir la ruta completa del comando. por ejemplo, & # 36 (/ bin/date), para una ejecución correcta.

Puede conocer la ruta de un programa específico usando el comando "whereis". por ejemplo, ¿dónde está la fecha?

[[email protected] /]# whereis date
date: /bin/date /usr/share/man/man1/date.1.gz

Es suficiente por ahora. No hablaremos mucho de estas teorías ahora. Llegando a Scripts.

Mover el directorio de trabajo actual

Muévase desde el 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. Hágalo ejecutable (chmod 755 up.sh). Correr:

./up.sh 4 (Moverá el directorio de trabajo actual a cuatro niveles).

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

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

[[email protected] /]# chmod 755 up
[[email protected] /]# ./up.sh 2
You are in: /

[[email protected] /]# ./up.sh 4 
You are in: / 

[[email protected] /]#

Crear una carpeta o un archivo 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‘ : Prints everything written within the quotes.
  2. $‘ : Is a shell variable.
  3. >>‘ : The output is redirected to the output of date command followed by txt extension.

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

[ro[email protected] /]# ./randomfile.sh  
Hello server 
Your File is being saved to /home/server/Desktop

Puede ver el archivo que se crea en el escritorio con la fecha de hoy y la hora actual.

[[email protected] /]# 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 la información de red de un servidor Linux.

Script para recopilar información de la red

Recopila información de red en un servidor Linux. La secuencia de comandos es demasiado grande y no es posible publicar todo el código y la salida de la secuencia de comandos aquí. Por lo tanto, es mejor que pueda descargar el script usando el enlace de descarga a continuación y probarlo usted mismo.

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

[[email protected] /]# ./collectnetworkinfo.sh  

The Network Configuration Info Written To network.20-07-13.info.txt. Please email this file to [email protected]_provider.com. ktop

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

Script to Convierte 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 el caso de un archivo de cualquier longitud con un solo clic de mayúsculas a minúsculas y viceversa si es necesario, con pocas modificaciones.

[[email protected] /]# ./convertlowercase.sh  
Enter File Name : a.txt 

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

Salida de archivo nuevo (small.txt):

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

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
[[email protected] /]# ./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

Entonces, ¿viste lo fácil que era crear un programa poderoso como los cálculos de una manera tan simple? No es el fin. Completaremos con al menos un artículo más de esta serie, cubriendo una amplia perspectiva desde el punto de vista de la administración.

Eso es todo por ahora. Siendo el lector y el mejor crítico, no olvide decirnos cuánto y qué le gustó en este artículo y qué quiere ver en el futuro. Cualquier pregunta es bienvenida en los comentarios. Hasta entonces, manténgase saludable, seguro y sintonizado. Me gusta y comparte con nosotros y ayúdanos a difundir.