Weboldal keresés

Áthajózás a Linux BASH Scripting világán – III. rész


A „Shell Scripting” sorozat korábbi következő cikkeit nagyra értékelték, ezért ezt a cikket a tanulás véget nem érő folyamatának kiterjesztése érdekében írom.

  1. Alapvető Linux Shell Scripting nyelvi tippek – I. rész
  2. 5 Shell Script Linux kezdőknek a Shell programozás elsajátításához – II. rész
Bash kulcsszavak

A kulcsszó olyan szó vagy szimbólum, amelynek különleges jelentése van egy számítógépes nyelv számára. A következő szimbólumok és szavak különleges jelentéssel bírnak a Bash számára, ha nem idézik őket, és a parancs első szava.

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

A legtöbb számítógépes nyelvtől eltérően a Bash lehetővé teszi a kulcsszavak változónévként történő használatát, még akkor is, ha ez megnehezítheti a szkriptek olvasását. A szkriptek érthetősége érdekében nem szabad kulcsszavakat használni a változónevekhez.

A parancs shellben $(parancs) formában kerül megvalósításra. Lehetséges, hogy a parancs teljes elérési útját meg kell adnia. például $ (/bin/date) a helyes végrehajtás érdekében.

A „whereis” paranccsal ismerheti az adott program elérési útját. például: hol a dátum

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

Egyelőre ennyi elég. Ezekről az elméletekről most nem fogunk sokat beszélni. Jön a Scripts.

Az aktuális munkakönyvtár áthelyezése

Lépjen az aktuális munkakönyvtárból bármely szintre feljebb úgy, hogy végrehajtás közben csak a számértéket adja meg a szkript végén.

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

Mentse el a fenti kódokat „up.sh” néven az asztalon. Tegye végrehajthatóvá (chmod 755 up.sh). Fuss:

./up.sh 2 (két szinttel feljebb helyezi az aktuális munkakönyvtárat).
./up.sh 4 (az aktuális munkakönyvtár négy szinttel feljebb kerül).

Felhasználás és alkalmazási terület

Nagyobb szkriptekben, amelyek mappát tartalmaznak a mappán belül… amelyekben könyvtárak, binárisok, ikonok, futtatható fájlok stb. helyen, Ön mint fejlesztő megvalósíthatja ezt a szkriptet, hogy nagyon automatizált módon mozogjon a kívánt helyre.

Megjegyzés: A For egy ciklus a fenti szkriptben, és addig fut, amíg az értékek igazak lesznek a ciklusra.

Minta kimenet
[root@tecmint /]# chmod 755 up
[root@tecmint /]# ./up.sh 2
You are in: /

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

[root@tecmint /]#

Töltse le az up.sh

Hozzon létre egy véletlenszerű fájlt vagy mappát

Hozzon létre egy véletlenszerű fájlt (mappát) a többszörözés esélye nélkül.

#! /bin/bash

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

Ez egy egyszerű szkript, de nem olyan egyszerű a működése.

  1. visszhang’ : Mindent kinyomtat, ami az idézőjelben van.
  2. '$' : shell-változó.
  3. >’ : A kimenet a dátum parancs kimenetére, majd a txt kiterjesztésre kerül átirányításra.

Tudjuk, hogy a date parancs kimenete a dátum és az idő órában, percben második az év mellett. Így a kimenetet egy rendezett fájlnéven kaphatnánk anélkül, hogy a fájlnév-másolódás lehetősége lenne. Nagyon hasznos lehet, ha a felhasználónak szüksége van az időbélyegzővel létrehozott fájlra későbbi hivatkozás céljából.

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

Megtekintheti az asztalon létrehozott fájlt a mai dátummal és az aktuális idővel.

[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

Az alábbiakban bemutatjuk a fenti szkript részletesebb megvalósítását, amely a fenti elven működik, és nagyon hasznos a Linux szerver hálózati információinak összegyűjtéséhez.

Töltse le a randomfile.sh fájlt

Szkript a hálózati információk gyűjtéséhez

Hálózati információkat gyűjt egy Linux szerveren. A szkript túl nagy, és itt nem lehet a teljes kódot és a szkript kimenetét közzétenni. Tehát jobb, ha letölti a szkriptet az alábbi letöltési link segítségével, és saját maga teszteli.

Megjegyzés: Lehet, hogy telepítenie kell az lsb-core csomagot és más szükséges csomagokat és függőséget. Apt vagy Yum a szükséges csomagokat. Nyilvánvalóan root-nak kell lennie a szkript futtatásához, mert az itt használt parancsok többsége rootként van beállítva.

Minta kimenet
[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

Módosíthatja a fenti e-mail címet a szkriptjében, hogy elküldjük Önnek. Az automatikusan generált fájl megtekinthető.

Töltse le a collectionnetworkinfo.sh-t

Script to A NAGYBETŰT kisbetűvé alakítja

Egy szkript, amely a NAGYBETŰ-et kisbetűvé alakítja, és a kimenetet egy „small.txt” szövegfájlba irányítja, amely szükség szerint módosítható.

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

Ez a fenti szkript képes bármilyen hosszúságú fájl kis- és nagybetűjét egyetlen kattintással átalakítani nagybetűről kisbetűre és fordítva, ha szükséges, kis módosítással.

Minta kimenet
[root@tecmint /]# ./convertlowercase.sh  
Enter File Name : a.txt 

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

Új fájl (small.txt) kimenete:

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

Töltse le a convertlowercase.sh-t

Egyszerű kalkulátor program

#! /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
Minta kimenet
[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

Töltse le a simplecalc.sh-t

Láttad-e, milyen könnyű volt létrehozni egy hatékony programot, mivel ilyen egyszerű módon számításokat végezhetsz. Nem a vége. Ebből a sorozatból még legalább egy cikkel készülünk, amely széles perspektívát fed le a közigazgatás szempontjából.

Ez minden most. Olvasóként és legjobb kritikusként ne felejtse el elmondani nekünk, hogy mennyire és mit élvezett ebben a cikkben, és mit szeretne látni a következő cikkben. Bármilyen kérdést szívesen fogadunk kommentben. Addig is maradjon egészséges, biztonságos és hangolt. Lájkold és Oszd meg minket, és segíts a terjedésünkben.