1. พื้นฐานของ Bash

Bash Shell คืออะไร

Bash (Bourne Again Shell) เป็นส่วนติดต่อบรรทัดคำสั่งที่ใช้กันอย่างแพร่หลายที่สุดในลินุกซ์ดิสทริบิวชัน เครื่องมือนี้ใช้งานง่ายและทรงพลัง มอบแพลตฟอร์มให้ผู้ใช้สามารถโต้ตอบกับระบบ เช่น การจัดการไฟล์ การรันโปรแกรม และการจัดการงานพื้นฐานต่าง ๆ ได้อย่างหลากหลาย

ข้อดีของ Bash

  • ความสามารถในการเขียนสคริปต์ที่ทรงพลัง: Bash สามารถอัตโนมัติกระบวนการที่ซับซ้อนได้ด้วย shell script
  • ได้รับการสนับสนุนอย่างกว้างขวาง: รองรับในระบบปฏิบัติการ Unix เกือบทั้งหมดและลินุกซ์ดิสทริบิวชันส่วนใหญ่
  • ปรับแต่งได้สูง: ผู้ใช้สามารถปรับแต่งสภาพแวดล้อมให้ตรงกับสไตล์การทำงานของตนเองด้วย alias และ shell function
# ตัวอย่างคำสั่ง Bash พื้นฐาน
echo "Hello, World!"

2. คำสั่งพื้นฐานของ Bash

การจัดการไฟล์

ต่อไปนี้คือคำสั่งที่ใช้จัดการไฟล์ใน Bash ซึ่งใช้งานบ่อยที่สุด

  • ls: แสดงรายการไฟล์และโฟลเดอร์ในไดเรกทอรี
  • cd: เปลี่ยนไดเรกทอรี
  • cp: คัดลอกไฟล์หรือไดเรกทอรี
  • mv: ย้ายหรือเปลี่ยนชื่อไฟล์
  • rm: ลบไฟล์
# แสดงรายละเอียดไฟล์ในไดเรกทอรี
ls -l

# ไปยังโฮมไดเรกทอรี
cd ~

# คัดลอกไฟล์
cp source.txt destination.txt

# ย้ายหรือเปลี่ยนชื่อไฟล์
mv old_name.txt new_name.txt

# ลบไฟล์
rm unwanted_file.txt

การดูข้อมูลระบบและจัดการโปรเซส

คำสั่งที่ใช้ตรวจสอบข้อมูลระบบและจัดการโปรเซสก็สำคัญเช่นกัน

  • ps: แสดงโปรเซสที่กำลังทำงานอยู่
  • top: แสดงรายชื่อโปรเซสแบบเรียลไทม์และภาพรวมของระบบ
  • kill: ส่งสัญญาณไปหยุดโปรเซส
# แสดงโปรเซสที่ทำงานอยู่
ps aux

# ดูสรุประบบและรายการโปรเซส
top

# หยุดโปรเซสที่มี PID 1234
kill 1234

 

3. วิธีเขียน Bash Script

โครงสร้างพื้นฐานของสคริปต์

Bash Script คือไฟล์ที่ประกอบด้วยคำสั่งหลายบรรทัด สามารถใช้เพื่ออัตโนมัติกระบวนการหรือชุดงานต่าง ๆ ได้

#!/bin/bash
# บรรทัดนี้เรียกว่า shebang ใช้กำหนด shell ที่จะตีความสคริปต์

echo "Hello, World!"  # แสดงข้อความด้วยคำสั่ง echo

การใช้ตัวแปร

สามารถใช้ตัวแปรเพื่อเก็บข้อมูลและนำไปใช้ซ้ำภายในสคริปต์

#!/bin/bash
message="Hello, Bash Scripting!"
echo $message

เงื่อนไขและลูป

ใช้โครงสร้างเงื่อนไขและลูปเพื่อสร้างตรรกะที่ซับซ้อนหรือทำซ้ำงานเดิม ๆ

#!/bin/bash
# ตัวอย่าง if statement
if [ $1 -gt 100 ]
then
  echo "The number is greater than 100."
else
  echo "The number is 100 or less."
fi

# ตัวอย่าง for loop
for i in 1 2 3 4 5
do
  echo "Looping ... number $i"
done

4. การทำงานอัตโนมัติด้วย Bash

ภาพรวมของการทำงานอัตโนมัติ

สามารถใช้ Bash Script เพื่อทำงานที่ต้องทำซ้ำ ๆ ให้เป็นอัตโนมัติ เช่น การสำรองข้อมูล ซิงก์ข้อมูล สร้างรายงาน ฯลฯ ช่วยลดภาระของผู้ดูแลระบบ

สคริปต์สำรองข้อมูลอัตโนมัติ

ตัวอย่างสคริปต์ด้านล่างจะสำรองโฟลเดอร์ที่กำหนดไว้เป็นประจำเพื่อปกป้องข้อมูล

#!/bin/bash
SRC_DIR="/home/user/documents"
DST_DIR="/backup/documents"
DATE=$(date +%Y%m%d)

# หากไม่มีไดเรกทอรีสำรองข้อมูล ให้สร้างขึ้นมา
if [ ! -d "$DST_DIR" ]; then
  mkdir -p "$DST_DIR"
fi

# บีบอัดและสำรองข้อมูล
tar -czf "$DST_DIR/backup_$DATE.tar.gz" -C "$SRC_DIR" .
echo "Backup completed successfully."

รันสคริปต์อัตโนมัติด้วย cron job

ใช้ cron ตั้งให้สคริปต์สำรองข้อมูลด้านบนทำงานอัตโนมัติทุกวันตอน 2.00 น.

0 2 * * * /path/to/backup.sh

การจัดการข้อผิดพลาดและการแจ้งเตือน

เพิ่มการจัดการข้อผิดพลาดในกระบวนการสำรองข้อมูล และแจ้งเตือนผู้ดูแลเมื่อเกิดปัญหา

#!/bin/bash
SRC_DIR="/home/user/documents"
DST_DIR="/backup/documents"
LOG_FILE="/var/log/backup.log"
DATE=$(date +%Y%m%d)

if [ ! -d "$DST_DIR" ]; then
  mkdir -p "$DST_DIR"
fi

if tar -czf "$DST_DIR/backup_$DATE.tar.gz" -C "$SRC_DIR" .; then
  echo "Backup successful on $DATE" >> $LOG_FILE
else
  echo "Backup failed on $DATE" | mail -s "Backup Failure" admin@example.com
fi
侍エンジニア塾