Sailing Through The World of Linux BASH Scripting - Μέρος III


Τα προηγούμενα παρακάτω άρθρα της σειράς «Shell Scripting» εκτιμήθηκαν ιδιαίτερα και ως εκ τούτου γράφω αυτό το άρθρο για να επεκτείνω την ατέρμονη διαδικασία μάθησης.

  1. Κατανοήστε τις βασικές συμβουλές γλώσσας δέσμης ενεργειών Linux Shell – Μέρος I
  2. 5 Σενάρια Shell για αρχάριους Linux για να μάθουν προγραμματισμό Shell – Μέρος II
Λέξεις-κλειδιά Bash

Μια λέξη-κλειδί είναι μια λέξη ή σύμβολο που έχει ειδική σημασία για μια γλώσσα υπολογιστή. Τα παρακάτω σύμβολα και λέξεις έχουν ειδική σημασία για το Bash όταν είναι χωρίς εισαγωγικά και είναι η πρώτη λέξη μιας εντολής.

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

Σε αντίθεση με τις περισσότερες γλώσσες υπολογιστών, το Bash επιτρέπει τη χρήση λέξεων-κλειδιών ως ονόματα μεταβλητών, παρόλο που αυτό μπορεί να δυσκολέψει την ανάγνωση των σεναρίων. Για να διατηρούνται κατανοητά τα σενάρια, οι λέξεις-κλειδιά δεν πρέπει να χρησιμοποιούνται για ονόματα μεταβλητών.

Μια εντολή υλοποιείται στο κέλυφος ως $(εντολή). Ίσως χρειαστεί να συμπεριλάβετε την πλήρη διαδρομή της εντολής. π.χ., $ (/bin/date), για σωστή εκτέλεση.

Μπορεί να γνωρίζετε τη διαδρομή ενός συγκεκριμένου προγράμματος χρησιμοποιώντας την εντολή "whereis". π.χ., ημερομηνία

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

Αυτό αρκεί προς το παρόν. Δεν θα μιλήσουμε πολύ για αυτές τις θεωρίες τώρα. Έρχομαι στα Σενάρια.

Μετακίνηση τρέχοντος καταλόγου εργασίας

Μετακινηθείτε από τον τρέχοντα κατάλογο εργασίας σε οποιοδήποτε επίπεδο προς τα πάνω παρέχοντας απλώς την αριθμητική τιμή στο τέλος του σεναρίου κατά την εκτέλεση.

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

Αποθηκεύστε τους παραπάνω κωδικούς ως "up.sh", στην επιφάνεια εργασίας σας. Κάντε το εκτελέσιμο (chmod 755 up.sh). Τρέξιμο:

./up.sh 2 (θα μετακινήσει τον τρέχοντα κατάλογο εργασίας σε δύο επίπεδα πάνω).
./up.sh 4 (θα μετακινήσει τον τρέχοντα κατάλογο εργασίας σε τέσσερα επίπεδα επάνω).

Χρήση και Περιοχή Εφαρμογής

Σε μεγαλύτερα σενάρια που περιέχει φάκελο μέσα στον φάκελο μέσα… που περιέχει βιβλιοθήκες, δυαδικά, εικονίδια, εκτελέσιμα αρχεία κ.λπ. τοποθεσία, Εσείς ως προγραμματιστής μπορείτε να εφαρμόσετε αυτό το σενάριο για να μετακινηθείτε στην επιθυμητή τοποθεσία με πολύ αυτοματοποιημένο τρόπο.

Σημείωση: Το For είναι ένας βρόχος στο παραπάνω σενάριο και θα συνεχίσει να εκτελείται έως ότου οι τιμές είναι αληθείς για τον βρόχο.

Δείγμα εξόδου
[root@tecmint /]# chmod 755 up
[root@tecmint /]# ./up.sh 2
You are in: /

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

[root@tecmint /]#

Λήψη up.sh

Δημιουργήστε ένα τυχαίο αρχείο ή φάκελο

Δημιουργήστε ένα τυχαίο αρχείο (φάκελο) χωρίς πιθανότητα αντιγραφής.

#! /bin/bash

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

Αυτό είναι ένα απλό σενάριο, αλλά η λειτουργία του δεν είναι τόσο απλή.

  1. echo’ : Εκτυπώνει όλα όσα γράφονται μέσα στα εισαγωγικά.
  2. $’ : Είναι μια μεταβλητή φλοιού.
  3. >’ : Η έξοδος ανακατευθύνεται στην έξοδο της εντολής date ακολουθούμενη από επέκταση txt.

Γνωρίζουμε ότι η έξοδος της εντολής date είναι ημερομηνία και ώρα σε ώρα, λεπτά, ισχυρή> δεύτερη μαζί με έτος. Ως εκ τούτου, θα μπορούσαμε να λάβουμε έξοδο σε ένα οργανωμένο όνομα αρχείου χωρίς την πιθανότητα αντιγραφής του ονόματος αρχείου. Θα μπορούσε να είναι πολύ χρήσιμο όταν ο χρήστης χρειάζεται το αρχείο που δημιουργήθηκε με χρονοσήμανση για μελλοντική αναφορά.

Δείγμα εξόδου
[root@tecmint /]# ./randomfile.sh  
Hello server 
Your File is being saved to /home/server/Desktop

Μπορείτε να προβάλετε το αρχείο που δημιουργείται στην επιφάνεια εργασίας με τη σημερινή ημερομηνία και την τρέχουσα ώρα.

[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

Μια πιο λεπτομερής υλοποίηση της παραπάνω δέσμης ενεργειών δίνεται παρακάτω, η οποία λειτουργεί με την παραπάνω αρχή και είναι πολύ χρήσιμη για τη συλλογή των πληροφοριών δικτύου ενός διακομιστή Linux.

Λήψη του randomfile.sh

Σενάριο για τη συλλογή πληροφοριών δικτύου

Συγκεντρώνει πληροφορίες δικτύου σε διακομιστή Linux. Το σενάριο είναι πολύ μεγάλο και δεν είναι δυνατό να δημοσιεύσετε ολόκληρο τον κώδικα και την έξοδο του σεναρίου εδώ. Επομένως, είναι καλύτερο να μπορείτε να κάνετε λήψη του σεναρίου χρησιμοποιώντας τον παρακάτω σύνδεσμο λήψης και να το δοκιμάσετε μόνοι σας.

Σημείωση: Ίσως χρειαστεί να εγκαταστήσετε το πακέτο lsb-core και άλλα απαιτούμενα πακέτα και εξάρτηση. Επιλέξτε ή Yum τα απαιτούμενα πακέτα. Προφανώς πρέπει να είστε root για να εκτελέσετε το σενάριο, επειδή οι περισσότερες από τις εντολές που χρησιμοποιούνται εδώ έχουν ρυθμιστεί ώστε να εκτελούνται ως root.

Δείγμα εξόδου
[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

Μπορείτε να αλλάξετε την παραπάνω διεύθυνση email στο σενάριό σας για να σας ταχυδρομηθεί. Μπορείτε να προβάλετε το αρχείο που δημιουργείται αυτόματα.

Κατεβάστε το collectnetworkinfo.sh

Σενάριο σε Μετατρέπει ΚΕΦΑΛΑΙΑ σε πεζά

Ένα σενάριο που μετατρέπει τα ΚΕΦΑΛΑΙΑ σε πεζά και ανακατευθύνει την έξοδο σε ένα αρχείο κειμένου "small.txt", το οποίο μπορεί να τροποποιηθεί όπως απαιτείται.

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

Αυτό το παραπάνω σενάριο μπορεί να μετατρέψει την περίπτωση ενός αρχείου οποιουδήποτε μήκους με ένα μόνο κλικ από κεφαλαία σε πεζά και αντίστροφα, εάν απαιτείται, με μικρή τροποποίηση.

Δείγμα εξόδου
[root@tecmint /]# ./convertlowercase.sh  
Enter File Name : a.txt 

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

Έξοδος νέου αρχείου (small.txt):

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

Κατεβάστε το convertlowercase.sh

Απλό πρόγραμμα αριθμομηχανής

#! /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
Δείγμα εξόδου
[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

Κατεβάστε το simplecalc.sh

Είδατε λοιπόν πόσο εύκολο ήταν να δημιουργήσετε ένα ισχυρό πρόγραμμα όπως υπολογισμοί με τόσο απλό τρόπο. Δεν είναι το τέλος. Θα συντάξουμε τουλάχιστον ένα ακόμη άρθρο αυτής της σειράς, που θα καλύπτει ευρεία προοπτική από την άποψη της διοίκησης.

Αυτα για τωρα. Όντας ο αναγνώστης και ο καλύτερος κριτικός, μην ξεχάσετε να μας πείτε πόσο και τι σας άρεσε σε αυτό το άρθρο και τι θέλετε να δείτε στο μελλοντικό άρθρο. Οποιαδήποτε ερώτηση είναι ευπρόσδεκτη στα σχόλια. Μέχρι τότε, μείνετε υγιές, ασφαλείς και συντονισμένοι. Μου αρέσει και Κοινοποιήστε μας και βοηθήστε μας να διαδοθούμε.