Tin tức và phân tích của tất cả các thiết bị di động

Tập lệnh Bash là gì và cách viết nó trong Linux

Giả sử bạn có một loạt lệnh Linux cần lặp lại nhiều lần. Bạn có thể viết các lệnh 1,000 lần và nguyền rủa số phận của mình, hoặc bạn có thể viết một tập lệnh bash nhỏ và đơn giản trong Linux để tự động hóa công việc tẻ nhạt này. Trong bài viết này, chúng ta sẽ thảo luận về tập lệnh bash là gì, ưu điểm của nó và cách viết tập lệnh bash trong Linux.

Bash Script trong Linux là gì

Giống như kịch bản phim cung cấp cho diễn viên ý tưởng về cách diễn một cảnh cụ thể. Theo cách tương tự, tập lệnh Bash là một tệp chứa loạt lệnh Linux khi được thực thi, chúng hoạt động giống như chúng đã được nhập vào dấu nhắc shell, từ đó tự động hóa quy trình làm việc của bạn. Tất cả các tập lệnh bash đều có phần mở rộng .sh, “dòng shebang” – #/bin/bash và có thể được chạy trực tiếp thông qua dấu nhắc shell.

Nói tóm lại, tập lệnh bash nhóm tất cả các lệnh bạn cần để thực thi riêng lẻ cho một tác vụ cụ thể. Bây giờ bạn đã biết tập lệnh bash trong Linux là gì, bây giờ chúng ta hãy xem những ưu điểm của nó.

Ưu điểm của việc sử dụng tập lệnh Bash trong Linux

Tập lệnh Bash nói chung là một công cụ mạnh mẽ và linh hoạt khiến nó trở thành một phần không thể thiếu trong kho vũ khí của mọi quản trị viên hệ thống, nhà phát triển và người dùng thành thạo. Dưới đây là một số ưu điểm chính của việc sử dụng tập lệnh bash:

  • Tự động hóa: Đây có thể là ưu điểm được tìm kiếm nhiều nhất khi sử dụng tập lệnh bash. Với tập lệnh bash, bạn có khả năng tự động hóa ngay cả những tác vụ lặp đi lặp lại, nhàm chán nhất, từ đó giảm công sức, tiết kiệm thời gian và giảm thiểu sai sót.
  • Uyển chuyển: Bạn có thể tạo tập lệnh bash tùy chỉnh phù hợp với nhu cầu của mình. Bạn thậm chí có thể tích hợp các ứng dụng và tập lệnh bên ngoài để làm cho quy trình làm việc của bạn trở nên hợp lý hơn.
  • Tính di động: Sau khi bạn tạo tập lệnh bash để thực hiện một tác vụ cụ thể, tập lệnh bash này có thể hoạt động trong mọi bản phân phối Linux, miễn là các phần phụ thuộc cần thiết được cài đặt trên hệ thống đó. Bạn thậm chí có thể sử dụng tập lệnh bash trên các hệ thống tương tự Unix khác như macOS và thậm chí trên Windows thông qua WSL.
  • Hội nhập: Tập lệnh Bash có thể được tích hợp với các công cụ khác như cơ sở dữ liệu, API hoặc thậm chí với các tập lệnh bash khác giúp người dùng tận dụng tối đa tiềm năng của các công cụ bên thứ ba cho các tác vụ phức tạp.
  • Dễ viết: Tập lệnh Bash rất dễ viết nhờ cú pháp đơn giản mà người dùng Linux đã quen thuộc. Bạn không cần bất kỳ công cụ hoặc phần mềm đặc biệt nào để viết các tập lệnh bash, cho phép tạo nguyên mẫu nhanh chóng các ý tưởng và công cụ mới.
  • Đường cong học tập thấp: Tập lệnh Bash có thời gian học tập tương đối thấp, khiến nó trở thành lựa chọn lý tưởng cho cả người mới bắt đầu và người dùng có kinh nghiệm.

Các thành phần tập lệnh Bash cơ bản trong Linux

Nếu bạn nhìn xung quanh, hầu hết mọi tập lệnh bash đều bao gồm một số thành phần cơ bản nhưng phổ biến, hoạt động như các khối xây dựng. Các khối này thêm cấu trúc chức năng vào toàn bộ tập lệnh:

1. Shebang (#!)

Mọi tập lệnh bash đều bắt đầu bằng “Dòng Shebang”, chỉ định đường dẫn cho trình thông dịch Linux sẽ được sử dụng. Nó được viết là:

#!/bin/bash

Mặc dù các bình luận đơn giản bị trình thông dịch bỏ qua khi tập lệnh bash được thực thi. Chúng chỉ được sử dụng để cung cấp thêm một số thông tin về mã cho người dùng. Nó cũng cải thiện khả năng đọc tổng thể của mã. Để viết nhận xét bằng tập lệnh bash, chỉ cần thêm octothorpe (#) vào đầu dòng.

Ví dụ:

# This is a comment line

3. Biến

Các biến trong tập lệnh bash giúp lưu trữ tạm thời các loại dữ liệu khác nhau trong bộ nhớ. Để gán một biến có giá trị trong tập lệnh bash, hãy sử dụng cú pháp sau:

<variable_name>=<value_to_store>

Ví dụ: để lưu trữ “John” bên trong biến “name”:

name="John"

Để truy cập giá trị được lưu trữ bên trong biến “name”, chỉ cần thêm ký hiệu “$” ở phía trước:

echo "Hello, $name"

Ở đây, giá trị được lưu trữ bên trong biến “name” được cắm vào câu lệnh echo, sau đó in kết quả cuối cùng dưới dạng:

Hello, John

4. lệnh tiếng vang

Lệnh echo là một lệnh đơn giản nhưng hữu ích, được sử dụng để in các giá trị dưới dạng đầu ra. Cú pháp in bằng lệnh echo là:

echo <value_to_print>

5. If-Else trong Bash Script

Đôi khi bạn có thể cần đưa ra những quyết định mang tính tình huống tùy thuộc vào các điều kiện khác nhau. Trong bash, bạn có thể đưa ra các quyết định khác nhau bằng các lệnh if, then và else với cú pháp sau:

if [ condition ]
then
    # code to be executed if the condition is true
else
    # code to be executed if the condition is false
fi

Dưới đây là các bộ ký tự khác nhau mà bạn có thể sử dụng trong bash cho các tập lệnh có điều kiện:

Bộ ký tựMô tả
&&Logic VÀ; Được sử dụng để so sánh hai điều kiện và chỉ trả về true nếu cả hai điều kiện đều được thỏa mãn
-eqTương đương với; Dùng để kiểm tra xem hai giá trị có bằng nhau hay không
-neKhông bằng; Kiểm tra xem một giá trị có bằng giá trị khác không
-ltÍt hơn; Được sử dụng để kiểm tra xem giá trị đầu tiên có nhỏ hơn giá trị thứ hai không
-gtLớn hơn; Kiểm tra xem giá trị đầu tiên có lớn hơn giá trị thứ hai không
-leNhỏ hơn hoặc bằng; Kiểm tra xem giá trị đầu tiên có nhỏ hơn hoặc bằng giá trị thứ hai không
-geLớn hơn hoặc bằng; Kiểm tra xem giá trị đầu tiên có lớn hơn hoặc bằng giá trị thứ hai không

Ví dụ: để kiểm tra xem hai giá trị trong một biến có bằng nhau hay không:

if [ $a -eq $b ]
then
    echo "Equal"
else
    echo "Not Equal"
fi

6. Vòng lặp

Vòng lặp được sử dụng khi bạn cần lặp lại một tập hợp các câu lệnh hoặc lệnh nhiều lần. Trong tập lệnh bash, bạn có thể sử dụng “Vòng lặp For” hoặc “Vòng lặp While” cho nhu cầu lặp của mình.

Vòng lặp cho

“Vòng lặp For” là một loại cấu trúc vòng lặp được sử dụng khi bạn biết chính xác số lần bạn cần lặp lại một nhóm câu lệnh hoặc sử dụng nó để xem qua danh sách các thứ. Cú pháp sử dụng vòng lặp for trong tập lệnh bash Linux là –

for <loop_variable> in <sequence>
do
    # commands to be executed for each item in the <sequence>
done

Đây là bản phân tích cú pháp trên:

  • đề cập đến biến tạm thời sẽ chứa từng mục của trong mỗi lần lặp. Bạn có thể chọn bất kỳ tên nào cho .
  • chứa các mục mà vòng lặp for sẽ lặp lại. Bạn có thể chỉ định một như sau:
    • Phạm vi số: Là dãy số cách đều nhau. Bạn có thể tạo một phạm vi bằng cú pháp sau: “{..}”.
    • Danh sách các mục: Bạn có thể chỉ định một danh sách rõ ràng các mục được phân tách bằng dấu cách như item1 item2 item3
    • đầu ra lệnh: Ngay cả đầu ra từ một lệnh cũng có thể được sử dụng dưới dạng với cú pháp là $()
  • LÀM biểu thị sự bắt đầu của phần thân vòng lặp chứa các câu lệnh mà bạn cần thực hiện nhiều lần.
  • xong phân định điểm cuối của vòng lặp.

Ví dụ: để in tất cả các số nguyên giữa 1 Và 5:

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

Trong khi lặp lại

Nói chung, vòng lặp while được sử dụng khi bạn không biết chính xác mình cần lặp lại một nhóm câu lệnh cụ thể bao nhiêu lần. Họ sẽ tiếp tục lặp lại các câu lệnh cho đến khi đáp ứng được một điều kiện cụ thể. Cú pháp sử dụng vòng lặp while là –

while [ <test_condition> ]
do
    # commands to be executed while the condition is true
done

Trong cú pháp trên:

  • đề cập đến điều kiện được kiểm tra trước mỗi lần lặp để kiểm tra xem nó có thỏa mãn hay không. Khi điều kiện không còn được thỏa mãn, vòng lặp sẽ kết thúc mà không cần nhập vào thân vòng lặp.
  • LÀM biểu thị sự bắt đầu của phần thân vòng lặp chứa các câu lệnh mà bạn cần thực hiện nhiều lần.
  • xong phân định điểm cuối của vòng lặp.

Ví dụ: để in tất cả các số nguyên giữa 1 Và 5:

i=1
while [ $i -le 5 ]
do
    echo "$i"
    i=$((i + 1))
done

Cách viết tập lệnh Bash trong Linux

Bây giờ bạn đã biết về các khối xây dựng cơ bản của tập lệnh bash trong Linux, bây giờ chúng ta có thể chuyển sang cách viết tập lệnh bash cho hệ thống Linux của bạn.

Bước chân 1: Tạo một tập tin mới

Bạn có thể tạo một tệp mới bằng bất kỳ trình soạn thảo văn bản hàng đầu nào có sẵn cho Linux. Đảm bảo cung cấp phần mở rộng cho tệp tập lệnh dưới dạng .sh. Ví dụ: để tạo bài kiểm tra có tên “test.sh” bằng trình soạn thảo văn bản nano.

nano test.sh

Bước chân 2: Xác định đường Shebang

Một dòng shebang xác định đường dẫn đến trình thông dịch mà bạn muốn sử dụng để thực thi tập lệnh bash. Đây là dòng đầu tiên của mọi tập lệnh bash và được viết phổ biến là:

#!/bin/bash

HOẶC

#!/bin/sh

Nếu bạn cần sử dụng bất kỳ trình thông dịch nào khác cho tập lệnh của mình, hãy sử dụng cú pháp sau:

#!/usr/bin/env <interpreter>

Note: Không bắt buộc phải thêm nhận xét vào mỗi tập lệnh bash bạn viết nhưng chúng có thể cải thiện khả năng đọc tổng thể của mã. Sử dụng biểu tượng octothorpe để thêm nhận xét vào tập lệnh của bạn. Khi tệp được thực thi, tất cả các nhận xét sẽ bị trình thông dịch bỏ qua.

Bước chân 3: Thêm lệnh và mã

Bây giờ bạn có thể bắt đầu thêm các lệnh và hướng dẫn cần thiết với sự trợ giúp của các thành phần bash, tất cả được kết hợp một cách hợp lý. Giả sử bạn cần tự động hóa quá trình di chuyển tất cả các tệp .txt trong một thư mục sang một thư mục riêng. Sử dụng tập lệnh bash này để di chuyển tất cả các tệp .txt vào một thư mục riêng trong hệ thống Linux của bạn:

#!/bin/bash

# Create a directory to store text files
mkdir -p TextFiles

# Move all .txt files to the TextFiles directory
for file in *.txt
do
    if [ -f "$file" ]; then
        mv "$file" TextFiles/
        echo "Moved: $file to TextFiles/"
    fi
done

echo "File organization complete!"

Có vẻ phức tạp? Hãy chia nó thành nhiều phần:

  • #!/bin/bash là dòng shebang và chỉ định rằng tập lệnh sẽ được thực thi bằng trình thông dịch bash.
  • # Tạo thư mục lưu trữ các file văn bản và # Di chuyển tất cả các file .txt vào thư mục TextFiles là các bình luận.
  • mkdir -p TextFiles tạo một thư mục mới có tên là “TextFile” nếu chưa tồn tại trong thư mục hiện tại.
  • for trong *.txt lặp lại tất cả các tệp .txt bằng vòng lặp for
  • do biểu thị sự bắt đầu của vòng lặp
  • nếu như [ -f “$file” ]; sau đó kiểm tra xem mục hiện tại có phải là tệp thông thường hay không
    • Nếu điều kiện trên được thỏa mãn thì tệp hiện tại sẽ được chuyển đến thư mục TextFiles với mv “$file” TextFiles/
    • echo “Moved: $file to TextFiles/” hiển thị thông báo trên bảng điều khiển cho biết tệp đã được chuyển đến thư mục TextFiles
  • fi chỉ ra rằng khối if đã thực thi xong cho lần lặp hiện tại.
  • done chỉ ra rằng khối vòng lặp for đã thực hiện xong.
  • Sau khi tất cả các tệp txt được di chuyển, thông báo cuối cùng sẽ được hiển thị trên bảng điều khiển bằng tiếng vang “Tổ chức tệp hoàn tất!”

Bước chân 4: Lưu tập lệnh

Khi bạn đã làm việc xong với tập lệnh bash, hãy lưu tệp và thoát khỏi trình chỉnh sửa.

Bước chân 5: Làm cho tệp có thể thực thi được

Nói chung, không phải tất cả các tệp tập lệnh đều có thể được thực thi bởi mọi loại người dùng trong Linux. Để làm cho tập lệnh bash có thể thực thi được, hãy sử dụng lệnh sau:

chmod +x <filename>

Ví dụ: để làm cho tệp test.sh có thể thực thi được:

chmod +x test.sh

Bước chân 6: Thực thi tập tin

Khi bạn đã tạo tập lệnh bash dưới dạng có thể thực thi được, hãy chạy tệp theo cú pháp sau:

./<filename>

Để chạy tệp test.sh:

./test.sh