Trong Linux, shell script giúp chúng ta theo nhiều cách khác nhau bao gồm thực hiện hoặc thậm chí tự động hóa các tác vụ quản trị hệ thống nhất định, tạo công cụ dòng lệnh đơn giản và nhiều hơn nữa.
Trong hướng dẫn này, chúng tôi sẽ chỉ cho người dùng Linux mới nơi lưu trữ đáng tin cậy các shell script tùy chỉnh, giải thích cách viết hàm shell tùy chỉnh và thư viện, sử dụng hàm từ thư viện trong các script khác.
Nơi Lưu Trữ Shell Script
Để chạy script của bạn mà không cần gõ đường dẫn đầy đủ/đ tuyệt đối, chúng phải được lưu trong một trong các thư mục trong biến môi trường $PATH.
Để kiểm tra $PATH của bạn, chạy lệnh dưới:
$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Thông thường, nếu thư mục bin tồn tại trong thư mục home của người dùng, nó tự động được bao gồm trong $PATH của anh ấy/cô ấy. Bạn có thể lưu shell script của mình ở đây.
Do đó, tạo thư mục bin (có thể cũng lưu script Perl, Awk hoặc Python hoặc bất kỳ chương trình nào khác):
$ mkdir ~/bin
Tiếp theo, tạo thư mục tên lib (viết tắt của libraries) nơi bạn sẽ giữ thư viện của riêng mình. Bạn cũng có thể giữ thư viện cho các ngôn ngữ khác như C, Python, v.v., trong đó. Dưới nó, tạo thư mục khác tên sh; đây sẽ đặc biệt lưu trữ thư viện shell của bạn:
$ mkdir -p ~/lib/sh
Tạo Hàm Shell Và Thư Viện Của Riêng Bạn
Một hàm shell là một nhóm lệnh thực hiện một tác vụ đặc biệt trong script. Chúng hoạt động tương tự như thủ tục, thủ tục con và hàm trong các ngôn ngữ lập trình khác.
Cú pháp viết hàm là:
function_name() { list of commands }
Ví dụ, bạn có thể viết hàm trong script để hiển thị ngày tháng như sau:
showDATE() {date;}
Mỗi khi bạn muốn hiển thị ngày tháng, chỉ cần gọi hàm trên bằng tên của nó:
$ showDATE
Một thư viện shell đơn giản chỉ là một shell script, tuy nhiên, bạn có thể viết một thư viện chỉ để lưu các hàm của mình mà sau đó có thể gọi từ các shell script khác.
Dưới đây là ví dụ thư viện tên libMYFUNCS.sh trong ~/lib/sh của tôi với nhiều ví dụ hàm hơn:
#!/bin/bash
#Hàm liệt kê rõ ràng các thư mục trong PATH
showPATH() {
oldifs="$IFS" #lưu bộ phân tách trường nội bộ cũ
IFS=: #chỉ định bộ phân tách trường nội bộ mới
for DIR in $PATH ; do
echo $DIR
done
IFS="$oldifs" #khôi phục bộ phân tách trường nội bộ cũ
}
#Hàm hiển thị người dùng đã đăng nhập
showUSERS() {
echo -e “Dưới đây là người dùng đã đăng nhập vào hệ thống:\n”
w
}
#In chi tiết người dùng
printUSERDETS() {
oldifs="$IFS" #lưu bộ phân tách trường nội bộ cũ
IFS=: #chỉ định bộ phân tách trường nội bộ mới
read -p "Nhập tên người dùng cần tìm:" uname #đọc username
echo "" #đọc và lưu từ chuỗi here string các giá trị vào biến dùng : làm phân tách trường
read -r username pass uid gid comments homedir shell <<< "$(cat /etc/passwd | grep "^$uname")"
#in các giá trị đã lấy
echo -e "Username is : $username\n"
echo -e "User's ID : $uid\n"
echo -e "User's GID : $gid\n"
echo -e "User's Comments : $comments\n"
echo -e "User's Home Dir : $homedir\n"
echo -e "User's Shell : $shell\n"
IFS="$oldifs" #lưu bộ phân tách trường nội bộ cũ
}
Lưu tệp và làm cho script có thể thực thi.
Cách Gọi Hàm Từ Thư Viện
Để dùng hàm trong lib, trước tiên bạn cần bao gồm lib trong shell script nơi hàm sẽ được dùng, theo dạng dưới:
$ ./path/to/lib OR $ source /path/to/lib
Vậy bạn sẽ dùng hàm printUSERDETS từ lib ~/lib/sh/libMYFUNCS.sh trong script khác như sau.
Bạn không phải viết code khác trong script này để in chi tiết người dùng cụ thể, chỉ cần gọi hàm đã có.
Mở tệp mới tên test.sh:
#!/bin/bash #include lib . ~/lib/sh/libMYFUNCS.sh #dùng hàm từ lib printUSERDETS #thoát script exit 0
Lưu nó, sau đó làm cho script có thể thực thi và chạy nó:
$ chmod 755 test.sh $ ./test.sh
Trong bài này, chúng tôi đã chỉ cho bạn nơi lưu trữ đáng tin cậy shell script, cách viết hàm shell và thư viện của riêng bạn, gọi hàm từ thư viện trong shell script thông thường.
Tiếp theo, chúng tôi sẽ giải thích một cách trực tiếp cấu hình Vim như một IDE cho Bash scripting. Cho đến lúc đó, hãy luôn kết nối với TecMint và chia sẻ suy nghĩ của bạn về hướng dẫn này qua mẫu phản hồi bên dưới.