ค้นหาเว็บไซต์

ล่องเรือผ่านโลกแห่งการเขียนสคริปต์ Linux BASH - ตอนที่ III


บทความก่อนหน้านี้ของซีรีส์ 'Shell Scripting' ต่อไปนี้ได้รับการชื่นชมอย่างสูง และด้วยเหตุนี้ ฉันจึงเขียนบทความนี้เพื่อขยายกระบวนการเรียนรู้ที่ไม่มีวันสิ้นสุด

  1. ทำความเข้าใจเคล็ดลับภาษาสคริปต์ Linux Shell ขั้นพื้นฐาน - ตอนที่ 1
  2. 5 เชลล์สคริปต์สำหรับมือใหม่ Linux เพื่อเรียนรู้การเขียนโปรแกรมเชลล์ - ตอนที่ II
ทุบตีคำหลัก

คำหลัก คือคำหรือสัญลักษณ์ที่มีความหมายพิเศษในภาษาคอมพิวเตอร์ สัญลักษณ์และคำต่อไปนี้มีความหมายพิเศษในการ Bash เมื่อไม่มีเครื่องหมายคำพูดและคำแรกของคำสั่ง

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

ไม่เหมือนกับภาษาคอมพิวเตอร์ส่วนใหญ่ Bash อนุญาตให้ใช้คำหลักเป็น ชื่อตัวแปร แม้ว่าจะทำให้อ่านสคริปต์ได้ยากก็ตาม เพื่อให้สคริปต์เข้าใจได้ ไม่ควรใช้คำสำคัญสำหรับชื่อตัวแปร

คำสั่งถูกนำมาใช้ในเชลล์เป็น $(command) คุณอาจต้องรวมเส้นทางการบังคับบัญชาแบบเต็ม เช่น $ (/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

เรารู้ว่าผลลัพธ์ของคำสั่ง วันที่ คือ วันที่ และ เวลา ใน ชั่วโมง, นาที วินาที พร้อมด้วย ปี ดังนั้นเราจึงสามารถส่งออกชื่อไฟล์ที่จัดระเบียบได้โดยไม่มีโอกาสซ้ำซ้อนชื่อไฟล์ อาจมีประโยชน์มากเมื่อผู้ใช้ต้องการไฟล์ที่สร้างด้วย การประทับเวลา เพื่อใช้อ้างอิงในอนาคต

ผลลัพธ์ตัวอย่าง
[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 และแพ็คเกจและการพึ่งพาอื่น ๆ ที่จำเป็น เหมาะ หรือ ยำ แพ็คเกจที่จำเป็น แน่นอนว่าคุณจะต้อง 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

คุณสามารถเปลี่ยนที่อยู่อีเมลด้านบนในสคริปต์ของคุณเพื่อให้ส่งอีเมลถึงคุณได้ สามารถดูไฟล์ที่สร้างขึ้นโดยอัตโนมัติได้

ดาวน์โหลด collectnetworkinfo.sh

สคริปต์เพื่อแปลงตัวพิมพ์ใหญ่เป็นตัวพิมพ์เล็ก

สคริปต์ที่แปลง UPPERCASE เป็น ตัวพิมพ์เล็ก และเปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์ข้อความ “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

คุณเห็นไหมว่ามันง่ายแค่ไหนในการสร้างโปรแกรมที่ทรงพลังเพื่อการคำนวณด้วยวิธีง่ายๆ มันไม่ใช่จุดสิ้นสุด เราจะรวบรวมบทความชุดนี้อย่างน้อยหนึ่งบทความ ซึ่งครอบคลุมมุมมองกว้างๆ จากมุมมองของฝ่ายบริหาร

นั่นคือทั้งหมดที่สำหรับตอนนี้. ในฐานะผู้อ่านและนักวิจารณ์ที่ดีที่สุดอย่าลืมบอกเราว่าคุณชอบบทความนี้มากแค่ไหนและคุณต้องการเห็นอะไรในบทความหน้า คำถามใด ๆ ยินดีเป็นอย่างยิ่งในความคิดเห็น จนกว่าจะมีสุขภาพ แข็งแรง ปลอดภัย และ ปรับตัว กดไลค์ และ แชร์ เราและช่วยให้เราเผยแพร่