Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình Bash

Thành thạo Linux Bash Scripting: Kỹ thuật nâng cao – Phần III

Các bài trước của series Shell Scripting được đánh giá cao nên viết bài này mở rộng quá trình học không bao giờ kết thúc.

Từ khóa Bash (Bash Keywords)

Từ khóa là từ hoặc ký hiệu có ý nghĩa đặc biệt với ngôn ngữ máy tính. Các ký hiệu và từ sau có ý nghĩa đặc biệt với Bash khi không được quote và là từ đầu tiên của lệnh.

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

Khác hầu hết ngôn ngữ máy tính, Bash cho phép từ khóa dùng làm tên biến dù làm script khó đọc. Để script dễ hiểu, không nên dùng từ khóa làm tên biến.

Lệnh được triển khai trong shell như $(command). Có thể cần đường dẫn đầy đủ. Ví dụ: $(/bin/date), để thực thi đúng.

Biết đường dẫn chương trình bằng 'whereis'. Ví dụ: whereis date

[admin@wsxdn.com /]# whereis date
date: /bin/date /usr/share/man/man1/date.1.gz

Đủ lý thuyết. Đến phần Script.

Di chuyển thư mục làm việc hiện tại

Di chuyển từ thư mục hiện tại lên cấp bất kỳ bằng cách cung cấp giá trị số ở cuối script khi chạy.

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

Lưu mã trên thành "up.sh" trên Desktop. Cấp quyền thực thi (chmod 755 up.sh). Chạy:

./up.sh 2 (di chuyển thư mục hiện tại lên 2 cấp).
./up.sh 4 (di chuyển lên 4 cấp).

Ứng dụng và khu vực sử dụng

Trong script lớn chứa thư mục lồng nhau chứa thư viện, binary, icon, file thực thi... ở vị trí khác nhau, developer có thể triển khai script này để di chuyển tự động đến vị trí mong muốn.

Lưu ý: For là vòng lặp trong script trên và tiếp tục thực thi cho đến khi giá trị đúng cho vòng lặp.

Kết quả mẫu
[admin@wsxdn.com /]# chmod 755 up
[admin@wsxdn.com /]# ./up.sh 2
You are in: /
[admin@wsxdn.com /]# ./up.sh 4
You are in: /
[admin@wsxdn.com /]#

Tải up.sh

Tạo file hoặc thư mục ngẫu nhiên

Tạo file (thư mục) ngẫu nhiên không trùng lặp.

#! /bin/bash
echo "Hello $USER"; echo "$(uptime)" >> "$(date)".txt
echo "File của bạn được lưu tại $(pwd)"

Script đơn giản nhưng hoạt động không đơn giản.

  1. 'echo': In mọi thứ trong ngoặc kép.
  2. '$': Là biến shell.
  3. '>>': Đầu ra chuyển hướng đến đầu ra lệnh date theo sau phần mở rộng txt.

Chúng ta biết đầu ra date là ngày, giờ, phút, giây cùng năm. Do đó có tên file tổ chức không trùng lặp. Rất hữu ích khi user cần file tạo với dấu thời gian cho tham khảo sau.

Kết quả mẫu
[admin@wsxdn.com /]# ./randomfile.sh
Hello server
Your File is being saved to /home/server/Desktop

Xem file tạo trên Desktop với ngày hôm nay và giờ hiện tại.

[admin@wsxdn.com /]# 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

Triển khai chi tiết hơn script trên, hoạt động trên nguyên tắc tương tự và rất hữu ích thu thập thông tin mạng Linux server.

Tải randomfile.sh

Script thu thập thông tin mạng

Thu thập thông tin mạng trên Linux server. Script quá lớn không thể đăng toàn bộ mã và đầu ra. Tốt nhất tải script qua link dưới và tự test.

Lưu ý: Có thể cần cài gói lsb-core và các gói phụ thuộc. Apt hoặc Yum các gói cần thiết. Cần quyền root vì hầu hết lệnh ở đây cấu hình chạy as root.

Kết quả mẫu
[admin@wsxdn.com /]# ./collectnetworkinfo.sh
The Network Configuration Info Written To network.20-07-13.info.txt. Please email this file to admin@wsxdn.com_provider.com.
ktop

Bạn có thể đổi email trong script để nhận mail. File tự động tạo có thể xem.

Tải collectnetworkinfo.sh

Script chuyển UPPERCASE sang lowercase

Script chuyển UPPERCASE sang lowercase và chuyển hướng đầu ra vào file text "small.txt" có thể sửa đổi.

#!/bin/bash
echo -n "Nhập tên file: "
read fileName
if [ ! -f $fileName ]; then
  echo "File $fileName không tồn tại"
  exit 1
fi
tr '[A-Z]' '[a-z]' < $fileName >> small.txt

Script trên chuyển đổi chữ hoa/thường file bất kỳ độ dài bằng một click từ uppercase sang lowercase và ngược lại nếu sửa chút.

Kết quả mẫu
[admin@wsxdn.com /]# ./convertlowercase.sh
Nhập tên file: a.txt
Initial File: A B C D E F G H I J K ...

File mới (small.txt) đầu ra:

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

Tải convertlowercase.sh

Chương trình máy tính đơn giản

#! /bin/bash
clear
sum=0
i="y"
echo " Nhập số thứ nhất."
read n1
echo "Nhập số thứ hai."
read n2
while [ $i = "y" ]
do
  echo "1.Cộng"
  echo "2.Trừ"
  echo "3.Nhân"
  echo "4.Chia"
  echo "Nhập lựa chọn"
  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 "Lựa chọn không hợp lệ";;
  esac
  echo "Tiếp tục (y/n))?"
  read i
  if [ $i != "y" ]
  then
    exit
  fi
done
Kết quả mẫu
[admin@wsxdn.com /]# ./simplecalc.sh
Nhập số thứ nhất. 12
Nhập số thứ hai. 14
1.Cộng
2.Trừ
3.Nhân
4.Chia
Nhập lựa chọn 1
Sum =26
Tiếp tục (y/n))? y
1.Cộng
2.Trừ
3.Nhân
4.Chia
Nhập lựa chọn 3
mul = 14812
Tiếp tục (y/n))? n

Tải simplecalc.sh

Bạn thấy tạo chương trình mạnh mẽ như tính toán dễ dàng đến nhường nào. Chưa kết thúc. Sẽ có ít nhất một bài nữa series này, góc nhìn rộng từ góc độ quản trị.

Đó là tất cả. Là người đọc và nhà phê bình tốt nhất, đừng quên cho biết bạn thích gì, muốn thấy gì trong bài tới. Mọi câu hỏi hoan nghênh trong comment. Cho đến lúc đó hãy khỏe, an toàn và theo dõi. Like và Share giúp lan tỏa.