#

Cách sử dụng Bash Script trong Linux cho người mới bắt đầu

cach viet Bash Scripts trong Linux

Tập lệnh Shell là một phần quan trọng của quá trình tự động hóa trong Linux. Scripting giúp bạn viết một chuỗi các lệnh trong một tệp và sau đó thực thi chúng.

Nhờ vào scripting, bạn sẽ tiết kiệm được kha khá thời gian do không cần viết đi viết lại những câu lệnh nhất định. Thay vào đó, bạn sẽ thực hiện nó một các tự động hàng ngày, thậm chí còn có thể lên lịch cho nó thực thi.

Đăng ký dịch vụ Cloud VPS Pro tại BKHOST

BKHOST đang có chương trình khuyến mãi cực shock dành cho khách hàng đăng ký mới dịch vụ Cloud VPS Pro:

  • Giảm giá lên đến 30%.
  • Tặng thêm 512 MB Ram.

Đăng ký ngay hôm nay:

vps

Bạn cũng có thể đặt một số tập lệnh nhất định để thực thi khi khởi động, chẳng hạn như hiển thị một thông báo cụ thể về việc khởi chạy một phiên mới hoặc đặt một số biến môi trường nhất định.

Nói về script thì các ứng dụng cũng như cách sử dụng nó có rất nhiều, do đó chúng ta hãy cùng theo dõi bài viết sau đây đề tìm hiểu sâu hơn về nó.

Giới thiệu về Bash Shell

Có thể bạn chưa biết, nhưng các dòng lệnh Linux hoạt được dựa vào chương trình cung cấp Shell. Shell đã phát triển để phục vụ cho nhiều tùy chọn khác nhau trong những năm qua.

Một số người dùng khác nhau có nhu cầu cấu hình để được sử dụng các trình shell khác nhau. Nhưng hầu hết người dùng thích gắn bó với trình shell mặc định hiện tại. Shell mặc định cho nhiều bản phân phối Linux là GNU Bourne-Again Shell (bash). Bash được thành công bởi Bourne shell (sh).

Khi bạn khởi chạy trình shell lần đầu tiên, nó sử dụng tập lệnh khởi động nằm trong tệp .bashrc hoặc .bash_profile cho phép bạn tùy chỉnh hành vi của trình shell.

Khi một shell được sử dụng để tương tác, nó sẽ hiển thị $ khi nó đang đợi lệnh từ người dùng. Đây được gọi là dấu nhắc trình shell.

[username@host ~]$

Nếu shell đang chạy dưới dạng root, lời nhắc sẽ được thay đổi thành #. Lời nhắc shell superuser có cấu trúc như sau:
[root@host ~]#

Bash rất mạnh mẽ vì nó có thể đơn giản hóa một số hoạt động khó thực hiện một cách hiệu quả với GUI. Nhưng đối với các máy chủ, sẽ không hỗ trợ GUI do đó cách tốt nhất là bạn nên học thêm cách sử dụng của giao diện dòng lệnh CLI để có thể sử dụng trong những trường hợp không hỗ trợ GUI.

Bash Script là gì?

Bash Scrip là một chuỗi các lệnh được viết trong một tệp. Chúng được đọc và thực thi bởi chương trình bash. Chương trình này sẽ thực hiện từng dòng lệnh.

Ví dụ: bạn có thể điều hướng đến một đường dẫn nhất định, tạo một thư mục và tạo ra một quy trình bên trong nó bằng dòng lệnh. Bạn có thể thực hiện các bước tương tự theo trình tự bằng cách lưu các tệp trong một tập lệnh bash và thực thi nó. Tập lệnh được chạy với số lần không giới hạn.

Làm thế nào để bạn xác định một tập lệnh Bash?

1. Phần mở rộng tệp .sh

Theo quy ước đặt tên, các tập lệnh bash thường có đuôi .sh. Tuy nhiên, các tập lệnh bash có thể chạy hoàn toàn tốt mà không có phần mở rộng sh.

2. Tập lệnh bắt đầu bằng một bang

Tập lệnh còn được xác định với một shebang. Shebang là sự kết hợp giữa bash #bang! theo đường dẫn bash shell. Đây là dòng đầu tiên của script. Shebang ra lệnh cho shell thực thi nó thông qua bash shell. Shebang chỉ đơn giản là một đường dẫn tuyệt đối đến trình thông dịch bash.

Dưới đây là một ví dụ về câu lệnh shebang.

#! /bin/bash

Đường dẫn của chương trình bash có thể khác nhau. Ở phần sau, chúng ta sẽ cùng tìm hiểu các xác định đường dẫn.

3. Quyền thực thi

Các tập lệnh sẽ cấp quyền thực thi cho người dùng thực thi chúng.

Quyền thực thi được đại diện bằng chữ x. Trong ví dụ bên dưới, người dùng sẽ có quyền rwx (đọc, ghi, thực thi) đối với tệp test_script.sh

quyen thuc thi

4. Màu tệp

Các tập lệnh thực thi xuất hiện với màu khác so với phần còn lại của các tệp và thư mục.

Trong trường hợp này, các tập lệnh có quyền thực thi xuất hiện dưới dạng màu xanh lục.

mau tep

Cách tạo Bash Script đầu tiên của bạn

Tại đây chúng ta hãy tạo một script đơn giản trong bash để xuất ra Hello World.

1. Tạo một tệp có tên hello_world.sh

touch hello_world.sh

2. Tìm đường dẫn đến trình báo bash của bạn

which bash

Trong ví dụ dưới đây, đường dẫn là /usr/bin/bash và chúng ta sẽ đưa nó vào shebang.

tim duong dan den trinh bao bash

3. Viết lệnh

Sau đây chúng ta sẽ lặp lại “hello world” bằng bảng điều khiển.

Tập lệnh của chúng ta sẽ trông giống như sau:

#! usr/bin/bash
echo "Hello World"

Chỉnh sửa tệp hello_world.sh bằng trình soạn thảo văn bản mà bạn đang sử dụng sau đó thêm các dòng trên vào văn bản.

4. Cung cấp quyền thực thi cho người dùng của bạn

Sửa đổi quyền thực thi đối với tệp và cho phép thực thi tập lệnh bằng cách sử dụng lệnh bên dưới:

chmod u+x hello_world.sh

chmod giúp sửa đổi các quyền hiện có của tệp cho một người dùng cụ thể. Ví dụ trên là đang thêm +x vào người dùng u.

5. Chạy tập lệnh

Bạn có thể chạy tập lệnh theo những cách sau:

./hello_world.sh

bash hello_world.sh.

Và đây là kết quả:

chay tap lenh
Hai cách để chạy tập lệnh

Cú pháp cơ bản của Bash Scripting

Cũng giống như bất kỳ ngôn ngữ lập trình nào khác, bash scripting tuân theo một tập hợp các quy tắc để tạo ra các chương trình mà máy tính nào cũng có thể hiểu được. Trong phần này, chúng ta sẽ nghiên cứu cú pháp của bash scripting.

1. Cách xác định các biến

Chúng ta có thể xác định một biến bằng cách sử dụng cú pháp variable_name = value. Để nhận giá trị của biến, hãy thêm $ vào trước biến.

#!/bin/bash
# A simple variable example
greeting=Hello
name=Tux
echo $greeting $name

cach xac dinh bien

Tux cũng là tên của linh vật biểu tượng cho Linux, đó là chim cánh cụt.

tux
Hi, I am Tux

2. Biểu thức số học

Bash còn hỗ trợ các phép tính toán học, sau đây là các toán tử có trong bash:

OperatorUsage
+addition
subtraction
*multiplication
/division
**exponentiation
%modulus

Chạy ví dụ sau để hiểu rõ hơn về toán tử:

bieu thuc so hoc-1
Lưu ý các khoảng trắng, nó là một phần của cú pháp

Biểu thức số cũng có thể được tính toán và lưu trữ trong một biến bằng cú pháp dưới đây:

var=$((expression))

Hãy theo dõi ví dụ:

bieu thuc so hoc-2

Các phân số sẽ không được tính toán chính xác dựa vào các phép toán trên, thường nó sẽ bị cắt bớt.

Do đó, đối với các phép tính thập phân, chúng ta có thể sử dụng lệnh bc để lấy kết quả đến một số vị trí thập phân cụ thể. bc (Bash Calculator) là một máy tính dòng lệnh hỗ trợ tính toán đến một số điểm thập phân nhất định.

echo "scale=2;22/7" | bc

Trong đó scale thể hiện số lượng vị trí thập phân được xác định sẽ lấy như ở kết quả đầu ra bên dưới.

bieu thuc so hoc-3
Nhận đầu ra đến 2 chữ số thập phân

3. Cách đọc đầu vào của người dùng

Đôi khi bạn sẽ cần thu thập thông tin đầu vào của người dùng và thực hiện các thao tác có liên quan.

Trong bash, chúng ta có thể lấy thông tin đầu vào của người dùng bằng lệnh read.

read variable_name

Để nhắc người dùng bằng một thông báo tùy chỉnh, hãy sử dụng cờ -p.
read -p "Enter your age" variable_name

Ví dụ:
#!/bin/bash

echo "Enter a numner"
read a

echo "Enter a numner"
read b

var=$((a+b))
echo $var

cach doc dau vao cua nguoi dung

4. Toán tử logic so sánh số

So sánh được sử dụng để kiểm tra xem các câu lệnh đánh giá là đúng hay sai. Chúng ta có thể sử dụng các toán tử được hiển thị bên dưới để so sánh hai câu lệnh:

OperationSyntaxExplanation
Bằng nhaunum1 -eq num2is num1 bằng num2
Lớn hơn hoặc bằngnum1 -ge num2is num1 lớn hơn hoặc bằng num2
Lớn hơnnum1 -gt num2is num1 lớn hơn num2
Bé hơn hoặc bằngnum1 -le num2is num1 bé hơn hoặc bằng num2
Bé hơnnum1 -lt num2is num1 bé hơn num2
Không bằngnum1 -ne num2is num1 không bằng num2

Cú pháp được thực hiện như sau:

if [ conditions ]
then
commands
fi

Ví dụ: Hãy so sánh hai số và tìm mối quan hệ của chúng:
read x
read y

if [ $x -gt $y ]
then
echo X is greater than Y
elif [ $x -lt $y ]
then
echo X is less than Y
elif [ $x -eq $y ]
then
echo X is equal to Y
fi

Kết quả là:

toan tu logic so sanh so

5. Tuyên bố có điều kiện (Ra quyết định)

Điều kiện là các biểu thức đánh giá thành một biểu thức boolean (đúng hoặc sai). Để kiểm tra điều kiện, chúng ta có thể sử dụng if, if-else, if-elif-else và các điều kiện lồng nhau.

Cấu trúc của câu lệnh điều kiện như sau:

  • if…then…fi statements
  • if…then…else…fi statements
  • if..elif..else..fi
  • if..then..else..if..then..fi..fi.. (Nested Conditionals)

Cú pháp lệnh như sau:

if [[ condition ]]
then
statement
elif [[ condition ]]; then
statement
else
do this by default
fi

Để tạo ra các so sánh có ý nghĩa giữa các biến, chúng ta cũng có thể sử dụng AND -a và OR -o.

Câu lệnh dưới đây có nghĩa là: Nếu a lớn hơn 40 và b nhỏ hơn 6.

if [ $a -gt 40 -a $b -lt 6 ]

Ví dụ: Hãy tìm loại hình là tam giác bằng cách đọc độ dài các cạnh của nó.
read a
read b
read c

if [ $a == $b -a $b == $c -a $a == $c ]
then
echo EQUILATERAL

elif [ $a == $b -o $b == $c -o $a == $c ]
then
echo ISOSCELES
else
echo SCALENE

fi

Kết quả đầu ra sẽ là:

Trường hợp #1:

output tuyen bo co dieu kien-1

Trường hợp #2:

output tuyen bo co dieu kien-2

Trường hợp #3:

output tuyen bo co dieu kien-3

6. Vòng lặp và bỏ qua

Bạn có thể thực hiện vòng lặp với số lần cụ thể nhất định dựa vào vòng lặp for.

7. Vòng lặp với các số

Trong ví dụ dưới đây, vòng lặp sẽ lặp lại 5 lần.

#!/bin/bash

for i in {1..5}
do
echo $i
done

8. Vòng lặp với các chuỗi

Ngoài ra các chuỗi cũng có thể thực hiện vòng lặp bằng cú pháp như ví dụ sau:

#!/bin/bash

for X in cyan magenta yellow
do
echo $X
done

Kết quả là:

output vong lap voi cac chuoi

9. Vòng lặp While

Vòng lặp while kiểm tra một điều kiện và lặp lại cho đến khi điều kiện vẫn đúng. Chúng ta cần cung cấp một câu lệnh tăng bộ đếm để điều khiển việc thực thi vòng lặp.

Trong ví dụ dưới đây, dòng lệnh ((i + = 1)) là câu lệnh truy cập làm tăng giá trị của i.

Cú pháp như sau:

#!/bin/bash
i=1
while [[ $i -le 10 ]] ; do
echo "$i"
(( i += 1 ))
done

vong lap while

10. Đọc tệp

Giả sử chúng ta có một tệp sample_file.txt như hình dưới đây:

doc tep-1

Từng dòng một của tệp sẽ được đọc bằng dòng lệnh sau đây và in ra kết quả trên màn hình.

#!/bin/bash

LINE=1

while read -r CURRENT_LINE
do
echo "$LINE: $CURRENT_LINE"
((LINE++))
done < "sample_file.txt"

Đầu ra in trên màn hình là:

doc tep-2
Các dòng được in với số dòng cụ thể

11. Cách thực hiện các lệnh với dấu tích phía sau

Nếu bạn cần shell gồm đầu ra của một lệnh phức tạp trong tập lệnh của mình, bạn có thể viết câu lệnh bên trong dấu ` ` phía sau.

Cú pháp:

var= ` commands `

Ví dụ: Giả sử chúng ta muốn lấy đầu ra của một danh sách các điểm gắn kết với tmpfs trong tên của chúng. Chúng ta có thể tạo một câu lệnh như sau:
df -h | grep tmpfs.

Để đưa nó vào tập lệnh bash, chúng ta có thể đặt nó trong ` ` phía sau.
#!/bin/bash

var=`df -h | grep tmpfs`
echo $var

Và đây là kết quả:

cach thuc hien cac lenh voi dau tich phia sau cach thuc hien

12. Cách lấy đối số cho tập lệnh từ dòng lệnh

Bạn có thể đưa ra các đối số cho script khi thực thi.

$@ đại diện cho vị trí của các tham số, bắt đầu từ số một.

#!/bin/bash

for x in $@
do
echo "Entered arg is $x"
done

Bạn có thể chạy nó như thế này:
./script arg1 arg2

Cách tự động hóa tập lệnh bằng cách lập lịch thông qua cron Jobs

Cron là một tiện ích lập lịch công việc luôn xuất hiện trong các hệ thống có cấu trúc tương tự Unix. Bạn có thể lên lịch các công việc để thực hiện hàng ngày, hàng tuần, hàng tháng hoặc vào một khoảng thời gian cụ thể trong ngày. Trong Linux, việc tự động hóa chủ yếu sẽ dựa và tiện ích cron

Dưới đây là cú pháp để lập lịch crons:

# Cron job example * * * * * sh /path/to/script.sh

Tại đây, dấu * đại diện cho (các) giờ, (các) ngày, (các) tháng, (các) ngày trong tuần, tương ứng theo yêu cầu của người dùng.Dưới đây là một số ví dụ về lập lịch công việc cron.

SCHEDULESCHEDULED VALUE
5 0 * 8 *Lúc 00:05 vào tháng 8.
5 4 * * 6Lúc 04:05 vào chủ nhật.
0 22 * * 1-5Lúc 22:00 vào các ngày trong tuần từ thứ 2 đến thứ 5.

Cách kiểm tra các tập lệnh hiện có trong hệ thống

1. Sử dụng crontab

Lệnh crontab -l dùng để liệt kê các tập lệnh đã được lên lịch trước đó cho một người dùng cụ thể.

su dung crontab kiem tra cac tap lenh co trong he thong
Các tập lệnh đã lên lịch của người dùng

2. Sử dụng lệnh tìm

Lệnh find giúp định vị tệp dựa trên các mẫu nhất định. Vì hầu hết các tập lệnh kết thúc bằng .sh, chúng ta có thể sử dụng tập lệnh find như sau:

find . -type f -name "*.sh"

Trong đó:

  • “.” đại diện cho thư mục hiện tại. Bạn có thể thay đổi bằng đường dẫn cho phù hợp.
  • -type f chỉ ra rằng loại tệp chúng tôi đang tìm kiếm là tệp dựa trên văn bản.
  • .sh có nghĩa là tìm kiếm các tệp có đuôi .sh

su dung lenh tim kiem tra cac lenh trong he thong

Tổng kết về Bash Script

Bài viết trên đây đã giúp các bạn có thêm kiến thức về shell script đồng thời biết cách viết Bash Script một cách cơ bản thông qua các ví dụ thiết thực. Hy vọng các bạn có thể vận dụng nó để viết nên các trương chình có ý nghĩa trong quá trình làm việc của bạn.

Nếu bạn còn gì thắc mắc về shell script, hãy để lại bình luận ở bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.

P/s: Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về lập trình, quản trị mạng, website, domain, hosting, vps, server, email,… Chúc bạn thành công.

Siêu khuyến mãi tên miền .XYZ tại BKHOST

BKHOST đang có chương trình khuyến mãi cực tốt dành cho khách hàng đăng ký mới tên miền .XYZ: Giảm tới hơn 80% – chỉ còn 59k/năm đầu (Giá gốc: 279k/năm).

Đăng ký ngay:

xyz domain

Tôi là Trịnh Duy Thanh, CEO & Founder Công ty Cổ Phần Giải Pháp Mạng Trực Tuyến Việt Nam - BKHOST. Với sứ mệnh mang tới các dịch vụ trên Internet tốt nhất cho các cá nhân và doanh nghiệp trong nước và quốc tế, tôi luôn nỗ lực hết mình nâng cấp đầu tư hệ thống phần cứng, nâng cao chất lượng dịch vụ chăm sóc khách hàng để đem đến những sản phẩm hoàn hảo nhất cho người tiêu dùng. Vì vậy, tôi tin tưởng sẽ đem đến các giải pháp CNTT mới nhất, tối ưu nhất, hiệu quả nhất và chi phí hợp lý nhất cho tất cả các doanh nghiệp.
Bình luận

Thanh toán linh hoạt

Chúng tôi chấp nhận thanh toán như ATM, Visa, Internet Banking, Paypal, Baokim, Ngân lượng

Gọi ĐT tư vấn ngay
Chat ngay qua Zalo
Chat ngay qua Messenger