Computer >> Máy Tính >  >> Lập trình >> Lập trình BASH

Shell Scripting cho người mới bắt đầu - Cách viết 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.

Điều này giúp bạn tiết kiệm thời gian vì bạn không phải viết đi viết lại một số lệnh nhất định. Bạn có thể thực hiện các công việc hàng ngày một cách hiệu quả và thậm chí lên lịch để chúng thực hiện tự động.

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 các biến môi trường nhất định.

Các ứng dụng và cách sử dụng tập lệnh có rất nhiều, vì vậy hãy đi sâu vào.

Trong bài này, bạn sẽ học:

  1. bash shell là gì?
  2. Tập lệnh bash là gì và bạn xác định nó như thế nào?
  3. Cách tạo và thực thi tập lệnh bash đầu tiên của bạn.
  4. Cú pháp cơ bản của kịch bản shell.
  5. Cách xem các tập lệnh đã lên lịch của hệ thống.
  6. Cách tự động hóa các tập lệnh bằng cách lên lịch thông qua các công việc cron.

Cách tốt nhất để học là thực hành. Tôi rất khuyến khích bạn làm theo bằng cách sử dụng Replit. Bạn có thể truy cập một trình bao Linux đang chạy trong vòng vài phút.

Giới thiệu về Bash Shell

Dòng lệnh Linux được cung cấp bởi một chương trình gọi là shell. Trong những năm qua, chương trình shell đã phát triển để phục vụ cho nhiều tùy chọn khác nhau.

Những người dùng khác nhau có thể được cấu hình để sử dụng các trình bao khác nhau. Nhưng hầu hết người dùng thích gắn bó với trình bao mặc định hiện tại. Vỏ 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 bao lần đầu tiên, nó sử dụng tập lệnh khởi động nằm trong .bashrc hoặc .bash_profile tệp cho phép bạn tùy chỉnh hành vi của trình bao.

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 bao.

[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 trình bao siêu người dùng trông giống 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. Hãy nhớ rằng hầu hết các máy chủ không có GUI và tốt nhất là học cách sử dụng sức mạnh của giao diện dòng lệnh (CLI).

Tập lệnh Bash là gì?

Tập lệnh bash 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 thực hiện từng dòng một.

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 trình tự các bước tương tự bằng cách lưu các lệnh trong một tập lệnh bash và chạy nó. Bạn có thể chạy tập lệnh bất kỳ số lần nào.

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

Phần mở rộng của tệp .sh .

Theo quy ước đặt tên, tập lệnh bash kết thúc bằng .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ần sh sự mở rộng.

Tập lệnh bắt đầu bằng một tiếng nổ nhỏ.

Tập lệnh cũng được xác định bằng shebang . Shebang là sự kết hợp củ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. Chúng ta sẽ xem cách xác định nó ở phần sau.

Quyền thực thi

Các tập lệnh có 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ởi x . Trong ví dụ bên dưới, người dùng của tôi có rwx quyền (đọc, ghi, thực thi) đối với tệp test_script.sh

Shell Scripting cho người mới bắt đầu - Cách viết Bash Scripts trong Linux

Màu của tệp

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

Trong trường hợp của tôi, các tập lệnh có quyền thực thi sẽ có màu xanh lục.

Shell Scripting cho người mới bắt đầu - Cách viết Bash Scripts trong Linux

Cách tạo tập lệnh Bash đầu tiên của bạn

Hãy tạo một tập lệnh đơn giản trong bash xuất ra Hello World .

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

touch hello_world.sh

Tìm đường dẫn đến bash shell của bạn.

which bash
Shell Scripting cho người mới bắt đầu - Cách viết Bash Scripts trong Linux

Trong trường hợp của tôi, đường dẫn là /usr/bin/bash và tôi sẽ đưa điều này vào shebang.

Viết lệnh.

Chúng tôi sẽ echo "xin chào thế giới" với bảng điều khiển.

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

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

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

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

Sửa đổi quyền đố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 sửa đổi các quyền hiện có của tệp cho một người dùng cụ thể. Chúng tôi đang thêm +x tới người dùng u .

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 .

Đây là kết quả đầu ra:

Shell Scripting cho người mới bắt đầu - Cách viết Bash Scripts trong Linux

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 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.

Cách xác định 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 $ trước biến.

#!/bin/bash
# A simple variable example
greeting=Hello
name=Tux
echo $greeting $name
Shell Scripting cho người mới bắt đầu - Cách viết Bash Scripts trong Linux

Tux cũng là tên của linh vật Linux, chim cánh cụt.

Shell Scripting cho người mới bắt đầu - Cách viết Bash Scripts trong Linux

Biểu thức số học

Dưới đây là các toán tử được bash hỗ trợ cho các phép tính toán học:

Nhà điều hành
Cách sử dụng
+ bổ sung
- phép trừ
* phép nhân
/ bộ phận
** lũy thừa
% mô-đun

Hãy chạy một vài ví dụ.

Shell Scripting cho người mới bắt đầu - Cách viết Bash Scripts trong Linux

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 thử một ví dụ.

#!/bin/bash

var=$((3+9))
echo $var
Shell Scripting cho người mới bắt đầu - Cách viết Bash Scripts trong Linux

Các phân số không được tính toán chính xác bằng cách sử dụng các phương pháp trên và bị cắt ngắn.

Đối với các phép tính thập phân , chúng ta có thể sử dụng bc lệnh để nhận 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 lên đến một số điểm thập phân nhất định.

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

Tỷ lệ scale xác định số vị trí thập phân cần thiết trong đầu ra.

Shell Scripting cho người mới bắt đầu - Cách viết Bash Scripts trong Linux

Cách đọc thông tin nhập 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 tôi có thể lấy thông tin đầu vào của người dùng bằng cách sử dụng read lệnh.

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 -p cờ.

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
Shell Scripting cho người mới bắt đầu - Cách viết Bash Scripts trong Linux

Toán tử lôgic So sánh Số

So sánh được sử dụng để kiểm tra xem các câu lệnh có đánh giá thành true hay không hoặc false . 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:

Hoạt động Cú pháp Giải thích
Bình đẳng num1 -eq num2 là num1 bằng num2
Lớn hơn bằng num1 -ge num2 là num1 lớn hơn num2
Lớn hơn num1 -gt num2 num1 lớn hơn num2
Nhỏ hơn bằng num1 -le num2 là num1 nhỏ hơn num2
Nhỏ hơn num1 -lt num2 nhỏ hơn num1 num2
Không bằng num1 -ne num2 là num1 không bằng num2

Cú pháp :

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

Đầu ra:

Shell Scripting cho người mới bắt đầu - Cách viết Bash Scripts trong Linux

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 (true hoặc false ). Để kiểm tra các đ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 tuyên bố
  • if...then...else...fi tuyên bố
  • if..elif..else..fi
  • if..then..else..if..then..fi..fi.. (Các điều kiện lồng nhau)

Cú pháp :

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

Để tạo các so sánh có ý nghĩa, chúng ta có thể sử dụng AND -a và HOẶC -o nữa.

Câu lệnh dưới đây được dịch thành:If 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 kiểu 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

Đầu ra :

Trường hợp thử nghiệm # 1

Shell Scripting cho người mới bắt đầu - Cách viết Bash Scripts trong Linux

Trường hợp thử nghiệm # 2

Shell Scripting cho người mới bắt đầu - Cách viết Bash Scripts trong Linux

Trường hợp thử nghiệm # 3

Shell Scripting cho người mới bắt đầu - Cách viết Bash Scripts trong Linux

Vòng lặp và bỏ qua

Vòng lặp for cho phép bạn thực thi các câu lệnh một số lần cụ thể.

Looping 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
Shell Scripting cho người mới bắt đầu - Cách viết Bash Scripts trong Linux

Looping với các chuỗi:

Chúng ta cũng có thể lặp lại các chuỗi.

#!/bin/bash

for X in cyan magenta yellow  
do
	echo $X
done
Shell Scripting cho người mới bắt đầu - Cách viết Bash Scripts trong Linux

Vòng lặp trong khi

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

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

Ví dụ:

#!/bin/bash
i=1
while [[ $i -le 10 ]] ; do
   echo "$i"
  (( i += 1 ))
done
Shell Scripting cho người mới bắt đầu - Cách viết Bash Scripts trong Linux

Đọc tệp

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

Shell Scripting cho người mới bắt đầu - Cách viết Bash Scripts trong Linux

Chúng tôi có thể đọc từng dòng của tệp và in kết quả ra 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:

Shell Scripting cho người mới bắt đầu - Cách viết Bash Scripts trong Linux

Cách thực hiện các lệnh có dấu tích quay lại

Nếu bạn cần bao 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 tích phía sau.

Cú pháp:

var =`commands `

Ví dụ :Giả sử chúng ta muốn nhận đầu ra của danh sách các điểm gắn kết với tmpfs trong tên của họ. 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 dấu tích.

#!/bin/bash

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

Đầu ra:

Shell Scripting cho người mới bắt đầu - Cách viết Bash Scripts trong Linux

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

Có thể đưa ra các đối số cho tập lệnh khi thực thi.

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

#!/bin/bash

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

Chạy nó như thế này:

./script arg1 arg2

Shell Scripting cho người mới bắt đầu - Cách viết Bash Scripts trong Linux

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

Cron là một tiện ích lập lịch công việc có mặt trong các hệ thống giống 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 thời điểm cụ thể trong ngày. Tự động hóa trong Linux chủ yếu dựa vào các công việc cron.

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

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

Đây, * đại diện đạ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.

Dưới đây là một số ví dụ về lập lịch công việc cron.

LỊCH TRÌNH GIÁ TRỊ LẬP LỊCH
5 0 * 8 * Lúc 00:05 tháng 8.
5 4 * * 6 Lúc 04:05 Chủ nhật.
0 22 * ​​* 1-5 Vào lúc 22:00 vào tất cả các ngày trong tuần từ thứ Hai đến thứ Sáu.

Bạn có thể tìm hiểu chi tiết về cron trong bài đăng trên blog này.

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

Sử dụng crontab

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

Shell Scripting cho người mới bắt đầu - Cách viết Bash Scripts trong Linux

Sử dụng lệnh find

find lệnh 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 tìm như sau:

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

Ở đâu,

  • . đại diện cho thư mục hiện tại. Bạn có thể thay đổi đường dẫn cho phù hợp.
  • -type f cho biết 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 yêu cầu đối sánh tất cả các tệp kết thúc bằng .sh .
Shell Scripting cho người mới bắt đầu - Cách viết Bash Scripts trong Linux

Nếu bạn muốn đọc chi tiết về lệnh find, hãy xem bài đăng khác của tôi.

Kết thúc

Trong hướng dẫn này, chúng ta đã học những kiến ​​thức cơ bản về kịch bản shell. Chúng tôi đã xem xét các ví dụ và cú pháp có thể giúp chúng tôi viết các chương trình có ý nghĩa.

Điều yêu thích của bạn mà bạn học được từ hướng dẫn này là gì? Hãy cho tôi biết trên Twitter!

Bạn có thể đọc các bài viết khác của tôi tại đây.

Vectơ công việc được tạo bởi macrovector - www.freepik.com