Buriavimas per „Linux BASH Scripting“ pasaulį - III dalis


Ankstesni sekantys „Shell Scripting“ serijos straipsniai buvo labai vertinami, todėl rašau šį straipsnį norėdamas pratęsti nesibaigiantį mokymosi procesą.

  1. Supraskite pagrindinius „Linux Shell“ scenarijų kalbos patarimus - I dalis
  2. 5 „Shell“ scenarijai, skirti „Linux“ naujokams išmokti „Shell“ programavimą - II dalis

Raktinis žodis yra žodis ar simbolis, turintis ypatingą reikšmę kompiuterio kalbai. Šie simboliai ir žodžiai turi ypatingą reikšmę „Bash“, kai jie nėra cituojami ir yra pirmasis komandos žodis.

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

Skirtingai nuo daugumos kompiuterio kalbų, „Bash“ leidžia raktinius žodžius naudoti kaip kintamuosius pavadinimus, nors tai gali apsunkinti scenarijų skaitymą. Kad scenarijai būtų suprantami, raktiniai žodžiai neturėtų būti naudojami kintamųjų pavadinimams.

Komanda yra įdiegta apvalkale kaip $(komanda). Gali tekti įtraukti visą komandos kelią. pvz., & # 36 (/ bin/date), teisingam vykdymui.

Galite žinoti konkrečios programos kelią naudodami komandą ‘whereis’. pvz., kur data

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

Kol kas to pakanka. Dabar apie šią teoriją daug nekalbėsime. Ateinu į scenarijus.

Perkelti dabartinį darbo katalogą

Pereikite iš dabartinio darbo katalogo į bet kurį aukštesnį lygį, vykdydami tiesiog nurodydami skaitinę vertę scenarijaus pabaigoje.

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

Išsaugokite aukščiau nurodytus kodus darbalaukyje kaip „up.sh“. Padarykite jį vykdomuoju (chmod 755 up.sh). Vykdyti:

./up.sh 2 (perkels dabartinį darbo katalogą į du aukštyn).
./up.sh 4 (perkels dabartinį darbo katalogą į keturis lygius aukštyn).

Didesniuose scenarijuose, kuriuose yra aplankas aplanke ..., kuriame yra bibliotekos, dvejetainiai failai, piktogramos, vykdomieji failai ir tt skirtingoje vietoje, jūs, kaip kūrėjas, galite įgyvendinti šį scenarijų, kad labai automatizuotai persikeltumėte į norimą vietą.

Pastaba: For yra kilpa aukščiau esančiame scenarijuje ir ji bus vykdoma tol, kol kilpos reikšmės bus teisingos.

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

 ./up.sh 4 
You are in: / 

Sukurkite atsitiktinį failą ar aplanką

Sukurkite atsitiktinį failą (aplanką) be galimybės dubliuotis.

#! /bin/bash

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

Tai yra paprastas scenarijus, bet jis nėra toks paprastas.

  1. ‘aidas’: išspausdina viską, kas parašyta kabutėse.
  2. ‘$’: yra kintamasis kintamasis.
  3. ‘>>’: išvestis nukreipiama į komandos data datą, po kurios tęsiasi txt plėtinys.

Mes žinome, kad datos komandos išvestis yra data ir laikas valandomis, minutėmis, sekundėmis kartu su metais. Taigi mes galėtume gauti išvestį iš organizuoto failo pavadinimo be galimybės dubliuoti failo pavadinimą. Tai gali būti labai naudinga, kai vartotojui ateityje reikalingas failas, sukurtas su laiko žyma.

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

Galite peržiūrėti failą, sukurtą darbalaukyje, naudodami Šiandienos datą ir dabartinį laiką.

 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

Toliau pateikiamas išsamesnis aukščiau minėto scenarijaus įgyvendinimas, kuris veikia aukščiau nurodytu principu ir yra labai naudingas renkant „Linux“ serverio tinklo informaciją.

Scenarijus, skirtas rinkti tinklo informaciją

Renka tinklo informaciją „Linux“ serveryje. Scenarijus yra per didelis ir neįmanoma čia paskelbti viso scenarijaus kodo ir išvesties. Taigi, geriau atsisiųsti scenarijų naudodamiesi žemiau esančia atsisiuntimo nuoroda ir patys išbandyti.

Pastaba: gali tekti įdiegti „lsb-core“ paketą ir kitus reikalingus paketus bei priklausomybę. Apt arba Yum reikiamas pakuotes. Akivaizdu, kad turite paleisti scenarijų, nes dauguma čia naudojamų komandų yra sukonfigūruotos vykdyti kaip root.

 ./collectnetworkinfo.sh  

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

Galite pakeisti aukščiau nurodytą el. Pašto adresą savo scenarijuje, kad jis būtų išsiųstas jums. Automatiškai sugeneruotą failą galima peržiūrėti.

Scenarijus paverčia didžiosiomis raidėmis mažąsias

Scenarijus, kuris konvertuoja „UPPERCASE“ į mažąsias raides ir nukreipia išvestį į tekstinį failą „small.txt“, kurį galima modifikuoti pagal poreikį.

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

Šis aukščiau pateiktas scenarijus gali konvertuoti bet kokio ilgio failo atvejį vienu paspaudimu iš didžiųjų į mažąsias ir atvirkščiai, jei reikia, mažai modifikuojant.

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

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

Naujo failo (small.txt) išvestis:

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

Paprasta skaičiuoklės programa

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

Taigi ar matėte, kaip lengva buvo sukurti tokią paprastą programą kaip skaičiavimus. Tai ne pabaiga. Sudarysime dar bent vieną šios serijos straipsnį, apimančią plačią perspektyvą administravimo požiūriu.

Kol kas viskas. Būdamas skaitytojas ir geriausias kritikas nepamirškite mums pasakyti, kiek ir kas jums patiko šiame straipsnyje ir ką norite pamatyti būsimame straipsnyje. Bet kuris klausimas yra labai sveikintinas komentare. Iki tol būkite sveiki, saugūs ir suderinti. Patinka ir dalinkitės mumis ir padėkite mums plisti.