🌱 Bash Basic - Các ký tự đặc biệt Special Characters

🌱 Bash Basic - Các ký tự đặc biệt Special Characters

    Bash sử dụng nhiều ký tự đặc biệt (special characters) để thực hiện các chức năng khác nhau trong script và dòng lệnh. Hiểu rõ ý nghĩa và cách sử dụng của chúng là điều cần thiết khi viết Bash script. Bài viết này mang tính chất liệt kê các ký tự đặc biệt thường sử dụng trong Bash và ví dụ sử dụng chúng! - Mục tiêu để những bài sau chúng ta có thể tra cứu lại.

Bash Script

shebang #!

    Ký tự đầu tiên trong một file Bash thường là shebang (#!), được đặt trên dòng đầu tiên của file. Shebang chỉ dẫn cho hệ điều hành biết chương trình nào sẽ được sử dụng để thực thi script.

#!/path/to/interpreter
  • #!: Đây là shebang, bắt buộc phải đứng đầu tiên trong file script.
  • /path/to/interpreter: Đường dẫn tuyệt đối đến chương trình interpreter sẽ xử lý script, ví dụ /bin/bash, /usr/bin/env python3.

    Một số cách dùng shebang:

  • Sử dụng đường dẫn tuyệt đối đến Bash:

    #!/bin/bash
        Đây là cách truyền thống và phổ biến nhất trên các hệ thống Linux.
  • Sử dụng env để tìm Bash:

    #!/usr/bin/env bash
    • Ưu điểm: Tìm Bash trong PATH thay vì sử dụng đường dẫn cố định.
    • Hữu ích khi script cần chạy trên các hệ thống mà Bash có thể không nằm ở /bin/bash.
  • Sử dụng Bash với chế độ gỡ lỗi:

    #!/bin/bash -x
    • -x: Kích hoạt chế độ debug, in ra từng lệnh trước khi thực thi.
  • Chạy Bash ở chế độ nghiêm ngặt:

    #!/bin/bash -e
    • -e: Dừng script ngay khi có lỗi xảy ra.

1. Ký tự điều khiển (Control Characters)

#

  • Ý nghĩa: Dùng để chú thích (comment) trong script.
  • Ví dụ:
    # Đây là một dòng chú thích echo "Hello, World!" # Chú thích sau lệnh

\

  • Ý nghĩa: Ký tự escape, dùng để bỏ qua ý nghĩa đặc biệt của ký tự kế tiếp.
  • Ví dụ:
    echo "Hello \"Bash\"" # Output: Hello "Bash"

;

  • Ý nghĩa: Phân tách nhiều lệnh trên cùng một dòng.
  • Ví dụ:
    echo "Hello"; echo "World"

&

  • Ý nghĩa: Chạy lệnh ở chế độ nền (background).
  • Ví dụ:
    sleep 10 & # Chạy lệnh trong nền

|

  • Ý nghĩa: Dùng để chuyển kết quả của một lệnh sang lệnh khác (pipeline).
  • Ví dụ:
    ls | grep "file"

>>>

  • Ý nghĩa: Chuyển hướng đầu ra đến một file.
    • >: Ghi đè file.
    • >>: Ghi thêm vào file.
  • Ví dụ:
    echo "Hello" > output.txt # Ghi đè echo "World" >> output.txt # Ghi thêm

<

  • Ý nghĩa: Chuyển hướng đầu vào từ một file.
  • Ví dụ:
    wc -l < input.txt # Đếm số dòng từ file

&&

  • Ý nghĩa: Chạy lệnh thứ hai nếu lệnh đầu tiên thành công.
  • Ví dụ:
    mkdir test && cd test

||

  • Ý nghĩa: Chạy lệnh thứ hai nếu lệnh đầu tiên thất bại.
  • Ví dụ:
    cd nonexistent || echo "Thư mục không tồn tại"

2. Ký tự nhóm (Grouping Characters)

{}

  • Ý nghĩa: Nhóm lệnh hoặc mở rộng tên file.
  • Ví dụ:
    echo {1..5} # Output: 1 2 3 4 5 { echo "Hello"; echo "World"; }

()

  • Ý nghĩa: Chạy lệnh trong một shell con.
  • Ví dụ:
    (cd /tmp && ls)

[]

  • Ý nghĩa: Dùng để kiểm tra điều kiện (trong lệnh test) hoặc biểu thức chính quy.
  • Ví dụ:
    [ -f file.txt ] && echo "File tồn tại"

$(...)

  • Ý nghĩa: Substitution, thay thế đầu ra của lệnh bên trong.
  • Ví dụ:
    current_date=$(date) echo "Hôm nay là $current_date"

3. Ký tự wildcard (Pattern Matching)

*

  • Ý nghĩa: Khớp với mọi chuỗi (zero hoặc nhiều ký tự).
  • Ví dụ:
    ls *.txt # Liệt kê tất cả file có đuôi .txt

?

  • Ý nghĩa: Khớp với một ký tự bất kỳ.
  • Ví dụ:
    ls file?.txt # Khớp với file1.txt, file2.txt

[]

  • Ý nghĩa: Khớp với bất kỳ ký tự nào trong tập hợp.
  • Ví dụ:
    ls file[1-3].txt # Khớp với file1.txt, file2.txt, file3.txt

! trong []

  • Ý nghĩa: Khớp với bất kỳ ký tự nào không thuộc tập hợp.
  • Ví dụ:
    ls file[!1-3].txt # Khớp với file4.txt, file5.txt

4. Ký tự đặc biệt trong biến

$

  • Ý nghĩa: Tham chiếu đến giá trị của biến.
  • Ví dụ:
    name="Bash" echo "Hello $name"

${}

  • Ý nghĩa: Cú pháp mở rộng để tham chiếu và xử lý biến.
  • Ví dụ:
    echo ${name,,} # Chuyển thành chữ thường

$?

  • Ý nghĩa: Trả về mã thoát (exit code) của lệnh vừa thực hiện.
  • Ví dụ:
    ls /nonexistent echo $? # Output: 2 (lỗi)

$#

  • Ý nghĩa: Số lượng tham số dòng lệnh.
  • Ví dụ:
    echo "Bạn đã nhập $# tham số"

 $@$*

  • Ý nghĩa: Truy cập tất cả tham số dòng lệnh.
  • Ví dụ:
    echo "Tham số: $@"

5. Ký tự khác

~

  • Ý nghĩa: Thư mục home của người dùng hiện tại.
  • Ví dụ:
    cd ~

!

  • Ý nghĩa: Thực hiện lại lệnh trước đó hoặc mở rộng lịch sử lệnh.
  • Ví dụ:
    !! # Chạy lại lệnh cuối

"'

  • Ý nghĩa: Quoting (đóng khung chuỗi).
    • ": Cho phép thay thế biến.
    • ': Giữ nguyên mọi ký tự bên trong.
  • Ví dụ:
    echo "Home: $HOME" echo 'Home: $HOME'

    Hiểu và sử dụng thành thạo các ký tự đặc biệt này là yếu tố then chốt để viết và quản lý Bash script một cách hiệu quả. Nhưng mà để thuộc lòng tất cả ký tự trên thì rất khó, vì vậy, bạn có thể coi đây như một phụ lục khi học để sau này có thể tra cứu lại.

>>>>>> Follow ngay <<<<<<<

Để nhận được những bài học miễn phí mới nhất nhé 😊
Chúc các bạn học tập tốt 😊

Nguyễn Văn Nghĩa

Mình là một người thích học hỏi và chia sẻ các kiến thức về Nhúng IOT.

Đăng nhận xét

Mới hơn Cũ hơn