Trong bài viết này Vietnix đã tổng hợp một bảng Bash Scripting, giúp bạn tra cứu nhanh các khái niệm, cú pháp và cấu trúc cơ bản như biến, câu điều kiện, vòng lặp, hàm và thao tác chuỗi. Mỗi phần đều có giải thích rõ ràng, giúp bạn dễ dàng nắm bắt và ứng dụng Bash Scripting Cheat Sheet hiệu quả.
Giới thiệu về Bash Script
Bash Scripting là một loại ngôn ngữ, tập lệnh (script) được viết bằng ngôn ngữ Bash (Bourne-Again Shell), được xem là một trong những chương trình thực hiện dòng lệnh (shell) phổ biến như chạy tập lệnh Bash, đặc biệt trong các hệ điều hành Unix và Linux.
Cấu trúc cú pháp cơ bản của Bash Script
Cú pháp Bash Script khá đơn giản và dễ hiểu. Để viết một script hoạt động đúng, bạn cần nắm rõ các khái niệm như câu lệnh, biến, kiểu dữ liệu, cấu trúc điều khiển,…
Một file Bash Script thường có phần mở rộng là .sh
. Để thực hiện một script bạn cần 2 điều kiện:
- Chạy mỗi dòng trên một trên cửa sổ
Terminal
hoặctty
(Thực tế sẽ giống với việc chạy từng câu lệnh để hoàn thành tác vụ) - Viết tất cả các câu lệnh cần thiết vào một file Bash (
*.sh
) và thực thi.
Để hiểu chi tiết hơn về các loại phím tắt hay cú pháp, bạn hãy tham khảo hệ thống Cheat Sheet (bảng phím tắt) hay được sử dụng trong môi trường Bash Script:
Zsh Cheat Sheet: một loại giao diện dòng lệnh (CLI) dành cho các hệ điều hành tương tự như Unix và Linux. Zsh giống như một phiên bản nâng cấp của Bourne shell (sh) với nhiều tính năng mới và cải tiến hơn Bash.
Ngoài đóng vai trò là một shell, Bash còn là đóng vai trò là một dòng lệnh hữu ích trên hệ điều hành Linux. Bạn có thể tham khảo lệnh bash để hiểu hơn về cách hoạt động của Shell Script (môi trường thực hiện tập lệnh).
Ngoài ra, bạn có thể tham khảo thêm về các vai trò về môi trường thực hiện lệnh – Bash có phải là ngôn ngữ lập trình để hiểu thêm chi tiết.
14 bảng cú pháp lệnh hệ thống Bash Scripting Cheat Sheat
- 8 cú pháp đối số và thực thi trong Bash Scripting
- 2 cú pháp Bash Scripting sử dụng cho chú thích
- 12 cú pháp sử dụng biến trong ngôn ngữ lập trình
- 5 cú pháp thực thi lệnh trong Bash Scripting
- 4 cú pháp thực hiện Input/Output trong Bash Scripting
- 12 cú pháp tùy chỉnh kiểu dữ liệu trong Bash Scripting
- 5 cú pháp sử dụng lệnh điều kiện trong Bash Scripting
- 6 cú pháp thực hiện vòng lặp nhóm lệnh nhiều lần
- 4 cú pháp sử dụng hàm trong Bash Scripting
- 8 phép tính toán học trong Bash Scripting
- 6 toán tử điều kiện số học trong Bash Scripting
- 3 toán tử Boolean kiểm tra điều kiện thực thi
- String – 8 cú pháp thao tác dạng chuỗi nhiều mục đích
- 6 toán tử so sánh String trong Bash Scripting
Bảng 1: 8 cú pháp đối số và thực thi trong Bash Scripting
Cú pháp | Mô tả |
---|---|
#! /bin/bash | Shebang ở đầu Bash Script chỉ định trình thông dịch |
#! /usr/bin/env bash | Shebang thay thế – sử dụng biến môi trường |
$# | Lưu trữ số lượng đối số được truyền vào cho Bash script. |
$1 , $2, $3 | Các biến lưu trữ giá trị của các đối số được truyền vào script Bash. |
exit | Thoát khỏi script Bash. |
CTRL + C | Phím tắt để dừng Bash. |
$(command_name) | Chạy một lệnh trong một subshell. |
sleep | Tạm dừng script trong một khoảng thời gian (giây, phút, giờ hoặc ngày) được chỉ định. |
Bảng 2: 2 cú pháp Bash Scripting sử dụng cho chú thích
Cú pháp | Mô tả |
# | Ghi chú một dòng. Mọi thứ sau dầu này sẽ bị bỏ qua khi đoạn code được chạy |
: <<‘ ‘ | Ghi chú nhiều dòng. Và dấu này sử dụng để bao quanh nội dung của ghi chú |
Chẳng hạn, ghi chú một dòng trong Bash scripting:
echo "Explain the code in a single line comment:"
# This is a single line comment.
Ghi chú nhiều dòng trong Bash scripting:
: '
This is a multiline comment
Next line of the comment
Following line of the comment
'
Bảng 3: 12 cú pháp sử dụng biến trong ngôn ngữ lập trình
Cú pháp | Mô tả |
---|---|
var_name=val | Gán giá trị cho biến được chỉ định. |
$ var_name | Truy cập giá trị của biến được chỉ định. |
“$var_name” | Biến có chứa ký tự đặc biệt phải được đặt trong dấu nháy kép hoặc đơn. |
var_name=$(command) | Gán output của một lệnh cho biến được chỉ định. |
readonly var_name=val | Ngăn việc sửa đổi giá trị của biến được chỉ định. |
$HOME, $PATH, $USER,... | Một số biến môi trường được xác định trước. |
$0 | Biến lưu trữ tên của script. |
$# | Biến lưu trữ số lượng đối số dòng lệnh. |
#? | Biến lưu trữ trạng thái thoát của lệnh được thực thi cuối cùng. |
$$ | Biến lưu trữ ID tiến trình của script hiện tại. |
$! | Biến lưu trữ ID tiến trình của lệnh nền được thực thi cuối cùng. |
unset var_name | Xóa biến với tên được chỉ định. |
Dưới đây là ví dụ minh hoạ về các loại biến và thuộc tính của biến.
name="John"
echo $name # Output: John
"$age"=25
echo $("$age") # Output: 25
current_date=$(date) # assign the output of date command to current_date
readonly profession="IT specialist" # This variable can't be modified
unset name # Output: Delete the variable called name
Bảng 4: 5 cú pháp thực thi lệnh trong Bash Scripting
Cú pháp | Mô tả |
---|---|
command_name | Thực thi trực tiếp lệnh có tên đã được chỉ định. |
`variable_name=command` | Phiên bản cũ của việc thay thế output của lệnh cho biến được chỉ định. |
command > file_name | Chuyển hướng output của lệnh đến file đã được chỉ định (ghi đè nếu file đã tồn tại). |
command >> file_name | Chuyển hướng output của lệnh đến một file được chỉ định (thêm vào cuối file nếu file đã tồn tại). |
command1 | command2 | Sử dụng output của command1 làm input cho command2. |
Ví dụ về thực hiện lệnh, thay thế lệnh và chuyển hướng output trong Bash:
ncal # execute the ncal command and display its return value
`content_list=ls` # execute the ls command and stores its return value in content_list variable
ls > files_list.txt # execute the ls command and stores its return value in files_list
date >> files_list.txt # execute the date command and appends its return value in files_list
date | echo # execute the date command pass its output as the input of echo command
Bảng 5: 4 cú pháp thực hiện Input/Output trong Bash Scripting
Các Script Bash có thể yêu cầu người dùng nhập dữ liệu (Input) trong quá trình chạy – Bash Input. Đây là một tính năng của script Bash trong việc tổng hợp, đọc input từ các file và có thể chuyển hướng output sang một file.
Cú pháp | Mô tả |
---|---|
read -p | Yêu cầu người dùng nhập thông tin. |
command < input_file | Chuyển hướng input từ file cho lệnh. |
command 2> error_file | Chuyển hướng lỗi phát sinh khi chạy lệnh đến file riêng. |
command &> file_name | Chuyển hướng các kết quả hoạt động và các lỗi vào chung một file. |
Ví dụ về cách lấy input và nhắc xuất output trong Bash Script:
echo "What is your name?"
read name # Promt the user to input his/her name and stores the input value in name variable
echo "Hello, $name!"
wc -l < input_file.txt # Redirect input from input_file.txt to wc -l
wc -l 2> error_file.txt # Redirect error of wc -l command to error_file.txt
wc -l &> log.txt # Redirect standard output or error of wc -l command to log.txt
Bảng 6: 12 cú pháp tùy chỉnh kiểu dữ liệu trong Bash Scripting
Cú pháp | Mô tả |
---|---|
x=5 | Số nguyên được coi là kiểu dữ liệu Số. |
is_valid=0 | Giá trị Boolean đại diện cho False (sai). |
is_valid=1 | Giá trị Boolean đại diện cho True (đúng). |
declare -a var=value | Khai báo một mảng được truy cập bằng chỉ mục (index). |
declare -A var | Khai báo một mảng kết hợp (associative array). |
declare -i var=value | Khai báo biến số nguyên. |
declare -r var=value | Khai báo một biến chỉ đọc (read-only). |
declare -x var=value | Khai báo một biến được xuất (exported variable). |
var_name=”” | Biến không được gán giá trị hoặc biến chưa được khởi tạo. |
array=(“element1” “element2” “element3″…) | Mảng tập hợp với các phần tử được truy cập bằng chỉ số số. |
declare -A array1array1[“element1″]=”value1”array2[“element2″]=”value2” | Mảng tập hợp các phần tử được truy cập bằng cách sử dụng chỉ số chuỗi. |
var=”Hellow World” | Chuỗi ký tự được đặt trong dấu nháy đơn hoặc nháy kép được coi là kiểu dữ liệu Chuỗi. |
Ví dụ về các data types trong Bash Script:
name="John" # String variable
count=10 # Numeric value
fruits=("apple" "banana" "orange") # Index Array
declare -A ages # Declare an associative array
ages["John"]=25 # Assigning value to a key
ages["Andrew"]=35 # Assigning value to another key
Bảng 7: 5 cú pháp sử dụng lệnh điều kiện trong Bash Scripting
Cú pháp | Mô tả |
---|---|
if [ condition ]; then#codefi | Nếu điều kiện đúng, thực hiện đoạn code trong phần then. |
if [ condition ]; then#codefielse#codefi | Nếu điều kiện đúng, thực hiện đoạn code trong phần then. Nếu không, thực hiện đoạn code trong phần else. |
if [ condition1 ]; then#codeelif [ condition2 ]; then#codeelse#codefi | Kiểm tra nhiều điều kiện liên tiếp. Nếu điều kiện đầu tiên đúng, thực hiện đoạn code trong phần then tương ứng. Nếu không, kiểm tra điều kiện tiếp theo (elif ) và cứ thế cho đến khi tìm thấy điều kiện đúng hoặc thực hiện đoạn code trong phần else nếu không có điều kiện nào đúng. |
case variable inpattern1)#code;;pattern2)#code;;pattern3)#code;;*);;esac | So sánh biến với các mẫu lần lượt từ trên xuống. Nếu khớp với mẫu nào thì thực thi mệnh đề tương ứng và thoát khỏi khối case. Thực thi * nếu không có mẫu nào khớp. |
test condition | Trả về giá trị 0 nếu điều kiện đúng, ngược lại trả về 1 nếu điều kiện sai. |
Ví dụ về cấu trúc của các câu lệnh điều kiện trong Bash Script:
age=18
if [ "$age" -ge 18 ]; then
echo "You are an adult."
fi
age=16
if [ "$age" -ge 18 ]; then
echo "You are an adult."
else
echo "You are not an adult."
fi
score=85
if [ "$score" -ge 90 ]; then
echo "You achieve Grade: A"
elif [ "$score" -ge 80 ]; then
echo "You achieve Grade: B"
else
echo "You achieve Grade: C"
fi
fruit="apple"
case $fruit in "apple")
echo "It's an apple."
;;
"banana" | "orange")
echo "It's a banana or an orange."
;;
*)
echo "The fruit name is not in the list."
;;
esac
Bảng 8: 6 cú pháp thực hiện vòng lặp nhóm lệnh nhiều lần
Cú pháp | Mô tả |
---|---|
for variable in list; do# Codedone | Lặp qua từng phần tử trong danh sách và thực hiện # Code cho mỗi phần tử. |
while condition; do# Codedone | Lặp lại # Code miễn là điều kiện còn đúng. |
until condition; do# Codedone | Lặp lại # Code cho đến khi điều kiện trở thành đúng. |
select variable in list; do# Codedone | Thực hiện # Code dựa trên lựa chọn mà biến nhận từ danh sách. |
continue | Bỏ qua lần lặp hiện tại và chuyển sang lần lặp tiếp theo. |
break | Thoát khỏi vòng lặp dựa trên một điều kiện nhất định. |
Ví dụ về các cấu trúc điều khiển có sẵn trong ngôn ngữ lập trình Bash:
for i in {1..5}; do
echo "Current value of the number is: $i"
done
count=1
while [ "$count" -le 5 ]; do
echo "Current value of count is: $count"
count=$((count + 1))
done
count=1
until [ "$count" -gt 5 ]; do
echo "Current value of count is: $count"
count=$((count + 1))
done
options=("Option 1" "Option 2" "Option 3")
select choice in "${options[@]}"; do
echo "You selected: $choice"
break
done
Bảng 9: 4 cú pháp sử dụng hàm trong Bash Scripting
Cú pháp | Mô tả |
---|---|
function_name() {# code} | Khai báo hàm với tên tên đã cho. (function_name). |
function_name | Gọi hàm với tên đã cho (function_name). |
local var_name=value | Khai báo biến cục bộ trong hàm. |
return | Thoát khỏi hàm và trả về giá trị cho hàm đã gọi. |
Ví dụ về cách định nghĩa và gọi hàm trong Bash Script:
# Define a function that calculates the square of a number
calculate_square() {
local num=$1
local square=$((num * num))
return $square
}
Bảng 10: 8 phép tính toán học trong Bash Scripting
Bash Script có thể tính toán với các số. Bạn có thể dùng các công thức và phép tính cơ bản để làm điều này. Dưới đây là cú pháp tính toán trong Bash:
Cú pháp | Mô tả |
---|---|
+ | Cộng. |
– | Trừ. |
* | Nhân. |
/ | Chia. |
% | Chia lấy dư. |
** | Luỹ thừa. |
((i++)) | Tăng giá trị của biến i lên 1. |
((i–)) | Giảm giá trị của biến i đi 1. |
Bảng 11: 6 toán tử điều kiện số học trong Bash Scripting
Cú pháp | Mô tả |
---|---|
-lt | Kiểm tra xem số bên trái có nhỏ hơn số bên phải hay không. |
-gt | Kiểm tra xem số bên trái có lớn hơn số bên phải hay không. |
-le | Kiểm tra xem số bên trái có nhỏ hơn hoặc bằng số bên phải hay không. |
-ge | Kiểm tra xem số bên trái có lớn hơn hoặc bằng số bên phải hay không. |
-eq | Kiểm tra xem hai số có bằng nhau hay không. |
-ne | Kiểm tra xem hai số có khác nhau hay không. |
Bảng 12: 3 toán tử Boolean kiểm tra điều kiện thực thi
Cú pháp | Mô tả |
---|---|
&& | Chỉ đúng khi tất cả các điều kiện đều đúng. |
|| | Đúng nếu ít nhất một trong các điều kiện đúng. |
! | Đảo ngược kết quả của một điều kiện (đúng thành sai, sai thành đúng). |
Bảng 13: String – 8 cú pháp thao tác dạng chuỗi nhiều mục đích
Cú pháp | Mô tả |
concatenated=”$str1 $str2″ | Nối 2 string str1 và str2 lại với nhau. |
substring=${str:n} | Lấy ra đoạn chuỗi con từ vị trí thứ n đến hết chuỗi str. |
substring=${str:0:5} | Lấy ra đoạn chuỗi con từ vị trí đầu tiên (vị trí 0) đến vị trí thứ 5 của chuỗi str. |
length=${#str} | Đếm số ký tự trong chuỗi str. |
[[ $str == *”World”* ]] | Kiểm tra xem chuỗi str có chứa từ “World” hay không. |
replaced=${str/World/Universe} | Thay thế lần xuất hiện đầu tiên của “World” bằng “Universe” trong chuỗi str. |
trimmed=${str##*( )} | Loại bỏ tất cả khoảng trắng ở đầu chuỗi str. |
trimmed=${trimmed%%*( )} | Loại bỏ tất cả khoảng trắng ở cuối chuỗi trimmed. |
Bảng 14: 6 toán tử so sánh String trong Bash Scripting
Cú pháp | Mô tả |
---|---|
= | Bằng. |
!= | Không bằng. |
< | Nhỏ hơn. |
> | Lớn hơn. |
-n str1 | Chuỗi str1 không rỗng. |
-z str2 | Chuỗi str2 rỗng. |
Câu hỏi thường gặp
Biến $@ có ý nghĩa như thế nào trong Bash?
Trong Bash Script, $@ là một biến đặc biệt đại diện cho tất cả các đối số được truyền vào cho script hoặc hàm, mỗi đối số được xem là một từ riêng biệt.
Tại sao lại sử dụng bash?
Bash được sử dụng rộng rãi với tính linh hoạt, khả năng script mạnh mẽ và là đóng vai trò quan trọng trong Unix/Linux nhờ vào độ ổn định, khả năng tương thích cao.
Ngôn ngữ lập trình nào là tốt nhất?
Không có ngôn ngữ lập trình nào là tốt nhất, bởi vì mỗi ngôn ngữ đều có ưu điểm và nhược điểm riêng, phù hợp với mục đích và công việc khác nhau.
Lời kết
Bài viết đã cung cấp bảng Bash Scripting cheat sheet hữu ích cho người mới bắt đầu. Vietnix hy vọng những kiến thức này sẽ giúp bạn tự tin hơn trong việc viết script, tự động hóa các tác vụ và nâng cao hiệu suất làm việc trên hệ thống Linux/Unix. Nếu còn điều gì thắc mắc, bạn hãy bình luận ngay bên dưới để được giải đáp cụ thể.