Navegant pel món de Linux BASH Scripting - Part III


Els articles següents de la sèrie Shell Scripting van ser molt apreciats i, per tant, estic escrivint aquest article per estendre el procés d'aprenentatge interminable.

  1. Comprendre els consells bàsics del llenguatge de scripting de Shell de Linux - Part I
  2. 5 Scripts de Shell per als principiants de Linux per aprendre la programació de Shell - Part II

Una paraula clau és una paraula o símbol que té un significat especial per a un llenguatge informàtic. Els símbols i paraules següents tenen significats especials per a Bash quan no estan entre cometes i la primera paraula d'una ordre.

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

A diferència de la majoria dels llenguatges informàtics, Bash permet utilitzar paraules clau com a noms de variables, tot i que això pot dificultar la lectura dels scripts. Per mantenir els scripts entenedors, no s'han d'utilitzar paraules clau per als noms de variables.

Una ordre s'implementa a l'intèrpret d'ordres com a $(ordre). És possible que hàgiu d'incloure la ruta completa del comandament. p. ex., $ (/bin/date), per a una execució correcta.

És possible que conegueu la ruta d'un programa específic mitjançant l'ordre whereis. per exemple, on és la data

 whereis date
date: /bin/date /usr/share/man/man1/date.1.gz

Amb això n'hi ha prou de moment. Ara no parlarem gaire d'aquestes teories. Arriba a Scripts.

Mou el directori de treball actual

Passeu del directori de treball actual a qualsevol nivell superior només proporcionant el valor numèric al final de l'script durant l'execució.

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

Deseu els codis anteriors com a up.sh, al vostre escriptori. Feu que sigui executable (chmod 755 up.sh). Correr:

./up.sh 2 (Mourà el directori de treball actual a dos nivells amunt).
./up.sh 4 (Mourà el directori de treball actual a quatre nivells amunt).

En scripts més grans que contenen una carpeta dins de la carpeta dins... que contenen biblioteques, binaris, icones, executables, etc. en diferents ubicacions, com a desenvolupador podeu implementar aquest script per moure's a la ubicació desitjada d'una manera molt automatitzada.

Nota: For és un bucle a l'script anterior i continuarà executant-se fins que els valors siguin certs per al bucle.

 chmod 755 up
 ./up.sh 2
You are in: /

 ./up.sh 4 
You are in: / 

Creeu un fitxer o carpeta aleatòria

Creeu un fitxer aleatori (carpeta) sense possibilitat de duplicació.

#! /bin/bash

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

Aquest és un script senzill, però el seu funcionament no és tan senzill.

  1. 'eco' : imprimeix tot el que s'escriu entre cometes.
  2. ‘$‘ : és una variable de l'intèrpret d'ordres.
  3. ‘>>‘: la sortida es redirigeix a l'ordre de sortida de la data seguida de l'extensió txt.

Sabem que la sortida de l'ordre de data és la data i l'hora en hora, minut i segon juntament amb l'any. Per tant, podríem obtenir una sortida en un nom de fitxer organitzat sense la possibilitat de duplicar el nom de fitxer. Pot ser molt útil quan l'usuari necessita el fitxer creat amb segell de temps per a una futura referència.

 ./randomfile.sh  
Hello server 
Your File is being saved to /home/server/Desktop

Podeu veure el fitxer que es crea a l'escriptori amb la data d'avui i l'hora actual.

 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ó es mostra una implementació més detallada de l'script anterior, que funciona segons el principi anterior i és molt útil per recopilar la informació de xarxa d'un servidor Linux.

Script per recopilar informació de xarxa

Reuneix informació de xarxa en un servidor Linux. L'script és massa gran i no és possible publicar tot el codi i la sortida de l'script aquí. Per tant, és millor que pugueu descarregar l'script mitjançant l'enllaç de descàrrega següent i provar-lo vosaltres mateixos.

Nota: és possible que hàgiu d'instal·lar el paquet lsb-core i altres paquets i dependències necessaris. Apt o Yum els paquets necessaris. Òbviament, cal ser root per executar l'script perquè la majoria de les ordres que s'utilitzen aquí estan configurades per executar-se com a root.

 ./collectnetworkinfo.sh  

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

Podeu canviar l'adreça de correu electrònic anterior al vostre script per rebre-la per correu. Es pot visualitzar el fitxer generat automàticament.

Script per Converteix MAJÚSCULES a minúscules

Un script que converteix MAJÚSCULES a minúscules i redirigeix la sortida a un fitxer de text small.txt que es pot modificar segons sigui necessari.

#!/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

Aquest script anterior pot convertir el cas d'un fitxer de qualsevol longitud amb un sol clic de majúscules a minúscules i viceversa si cal, amb poca modificació.

 ./convertlowercase.sh  
Enter File Name : a.txt 

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

Sortida de fitxer nou (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
 ./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

Així que vas veure com de fàcil era crear un programa potent com els càlculs d'una manera tan senzilla. No és el final. Elaborarem almenys un article més d'aquesta sèrie, que cobreix una perspectiva àmplia des de l'administració.

Això és tot per ara. Sent el lector i el millor crític, no us oblideu de dir-nos quant i què us ha agradat en aquest article i què voleu veure en el futur. Qualsevol pregunta és molt benvinguda en comentari. Fins aleshores estigueu sans, segur i atent. Fes m'agrada i comparteix-nos i ajuda'ns a difondre'ns.