Bash 5.3 có tính năng thay thế lệnh được cải thiện, biến mới và hỗ trợ C23.

bash Linux

Cách đây vài ngày, dự án GNU đã thông báo phát hành phiên bản mới của Bash 5.3, trình thông dịch lệnh phổ biến vẫn là tùy chọn mặc định trong hầu hết các bản phân phối Linux.

Phiên bản mới này là kết quả của gần ba năm làm việc , trong đó không chỉ ngôn ngữ và hoạt động của shell được cải tiến mà các tính năng mới cũng được bổ sung để phù hợp với các tiêu chuẩn hiện đại như C23. Nó cũng đi kèm với việc phát hành thư viện Readline 8.3.

Có gì mới trong Bash 5.3

Một trong những thay đổi đáng chú ý nhất trong Bash 5.3 là sự ra mắt các phương thức thay thế lệnh mới: `${ command; }` và `${|command;}` . Những phương thức này cho phép bạn chặn đầu ra của một lệnh mà không cần tạo tiến trình con hoặc sử dụng đường ống, do đó giảm mức tiêu thụ tài nguyên và cải thiện hiệu suất. Kết quả có thể được lưu trữ trực tiếp trong biến `REPLY`, đơn giản hóa các tác vụ thu thập đầu ra thông thường.

Một tính năng mới khác được giới thiệu trong GNU Bash 5.3 là biến GLOBSORT, cho phép bạn xác định tiêu chí sắp xếp khi mở rộng đường dẫn tệp. Người dùng có thể sắp xếp theo tên, kích thước, ngày sửa đổi, và nhiều hơn nữa, với các tùy chọn cho cả thứ tự tăng dần và giảm dần.

Ngoài ra, Bash 5.3 còn mang đến những cải tiến cho một số lệnh tích hợp sẵn. Lệnh `compgen` giờ đây có thể lưu trữ các gợi ý tự động hoàn thành vào một biến (`-V varname`), trong khi `read` hiện bao gồm tùy chọn `-E` để sử dụng thư viện Readline với các quy tắc tự động hoàn thành của Bash. Lệnh `source` cũng đã được cải tiến, hiện hỗ trợ `-p PATH` để sửa đổi đường dẫn tìm kiếm.

Ngoài ra, lệnh umask đã được điều chỉnh để hoàn toàn tuân thủ đặc tả POSIX , và hàm printf đã được cải tiến với các tùy chọn mới cho chuỗi đa byte và các cách biểu diễn ký tự và chuỗi thay thế.

Khả năng tương thích với C23 và tạm biệt K&R C

Một trong những thay đổi cấu trúc quan trọng nhất là việc áp dụng tiêu chuẩn C23 vào mã nguồn Bash. Kết quả là, hỗ trợ cho chế độ biên dịch "K&R C" , một kỹ thuật có từ những ngày đầu của ngôn ngữ C, đã bị loại bỏ.

Mặt khác, Bash 5.3 giới thiệu một số lệnh có thể tải như:

  • kv: để tạo mảng liên kết từ dữ liệu theo định dạng khóa-giá trị.
  • thời gian chuỗi: chuyển đổi ngày tháng ở định dạng văn bản sang giờ Unix.
  • fltexpr: cho phép bạn thực hiện các phép toán số học dấu phẩy động, mô phỏng hành vi của let.

Ngoài ra, biến động BASH_MONOSECONDS được thêm vào , cung cấp bộ đếm thời gian hệ thống đơn điệu , hữu ích cho các tác vụ mà tính ổn định về thời gian là rất quan trọng.

Ở chế độ POSIX, Bash hiện thực hiện so sánh chuỗi bằng các toán tử < và > trong khi vẫn tôn trọng cài đặt ngôn ngữ địa phương. Nó cũng điều chỉnh hành vi của các lệnh như test, trap, wait và bind, tuân thủ chặt chẽ các yêu cầu của tiêu chuẩn. Ví dụ, `trap -P` cho phép bạn in hành động bẫy cho mỗi tín hiệu, và `wait -n` cải thiện việc xử lý các tiến trình đã kết thúc và các phép thay thế.

Đọc dòng 8.3

Thư viện Readline, một phần bổ trợ cho Bash, cũng đã nhận được một bản cập nhật lớn. Trong số những tính năng mới đáng chú ý nhất là:

  • tìm kiếm-bỏ qua-trường hợp: cho phép tìm kiếm không phân biệt chữ hoa chữ thường trong lịch sử.
  • hoàn tất xuất khẩu: xuất các cách hoàn thành có thể có của một từ để xử lý bên ngoài.
  • thực thi lệnh có tên: Thực thi các lệnh có tên được đọc từ đầu vào chuẩn, hữu ích cho việc viết kịch bản và tùy chỉnh.
  • Hỗ trợ macro được cải thiện, các biến có thể cấu hình mới và xử lý kích thước màn hình tốt hơn sau khi tiếp tục (SIGCONT).

Cài đặt và/hoặc cập nhật Bash trên Linux

Đối với những ai quan tâm đến việc cài đặt hoặc cập nhật Bash trên Linux, bạn nên biết rằng điều này phụ thuộc vào bản phân phối bạn đang sử dụng. Dưới đây, tôi sẽ giải thích cách thực hiện trên các bản phân phối chính:

Trên các bản phân phối dựa trên Debian (như Ubuntu, Linux Mint)

sudo apt install --only-upgrade bash

Thao tác này sẽ cập nhật Bash lên phiên bản mới nhất có trong kho lưu trữ chính thức.

Nếu bạn muốn cài đặt từ đầu (ví dụ, trên một hệ thống tối thiểu):

sudo apt cài đặt bash

Trên các bản phân phối dựa trên Red Hat (như Fedora, CentOS, RHEL)

sudo dnf update bash Để cài đặt Bash (nếu chưa cài đặt):
sudo dnf cài đặt bash

Trên Arch Linux và các phiên bản phái sinh (như Manjaro)

sudo pacman -Syu bash

Lệnh này sẽ cập nhật Bash cùng với toàn bộ hệ thống. Để chỉ cài đặt Bash:

sudo pacman -S bash

Thêm vào danh sách nguồn ưu tiên trên Google.