basename là một tiện ích dòng lệnh tách thư mục và hậu tố theo sau khỏi tên tệp nhất định.
Sử dụng lệnh basename
Lệnh basename hỗ trợ hai định dạng cú pháp:
basename NAME [SUFFIX] basename OPTION... NAME...
basename lấy tên tệp và in thành phần cuối cùng của tên tệp. Ngoài ra, nó cũng có thể xóa bất kỳ hậu tố theo sau nào. Đây là một lệnh đơn giản chỉ chấp nhận một số tùy chọn.
Ví dụ cơ bản nhất là in tên tệp đã xóa các thư mục phía trước:
basename /etc/passwd
Đầu ra sẽ bao gồm tên tệp:
passwd
Lệnh basename loại bỏ mọi dấu / ký tự:
basename /usr/local/basename /usr/local
Cả hai lệnh sẽ tạo ra cùng một đầu ra:
local local
Theo mặc định, mỗi dòng đầu ra kết thúc bằng một ký tự dòng mới. Để kết thúc các dòng bằng NULL, hãy sử dụng tùy chọn -z( --zero).
Nhiều đầu vào
Lệnh basename có thể chấp nhận nhiều tên như các đối số. Để làm như vậy, hãy gọi lệnh với tùy chọn -a( --multiple), theo sau là danh sách các tệp được phân tách bằng dấu cách.
Ví dụ, để lấy tên tệp /etc/passwdvà /etc/shadow bạn sẽ chạy:
basename -a /etc/passwd /etc/shadow
passwd shadow
Loại bỏ hậu tố theo sau
Để xóa bất kỳ hậu tố theo sau nào khỏi tên tệp, hãy chuyển hậu tố đó làm đối số thứ hai:
basename /etc/hostname name
host
Nói chung, tính năng này được sử dụng để tách phần mở rộng tệp:
basename /etc/sysctl.conf .conf
sysctl
Một cách khác để xóa hậu tố theo sau là chỉ định hậu tố bằng tùy chọn -s( --suffix=SUFFIX):
basename -s .conf /etc/sysctl.conf
sysctl
Biểu mẫu cú pháp này cho phép bạn loại bỏ bất kỳ hậu tố theo sau nào khỏi nhiều tên:
basename -a -s .conf /etc/sysctl.conf /etc/sudo.conf
sysctl sudo
Ví dụ
Ví dụ sau cho thấy cách sử dụng basename bên trong vòng lặp for bash để đổi tên tất cả các tệp kết thúc bằng “.jpeg” trong thư mục hiện tại bằng cách thay thế phần mở rộng tệp từ “.jpeg” thành “.jpg”:
for file in *.jpeg; do
mv -- "$file" "$(basename $file .jpeg).jpg"
done
Nếu bạn đang sử dụng bash làm trình shell của mình, thay vì gọi basename, bạn có thể sử dụng phần mở rộng theo sau bằng cách sử dụng Mở rộng tham số Shell .
Phần kết luận
Các lệnh basename lọc ra đầu thư mục và dấu suffix từ tên.
Nếu bạn có bất kỳ câu hỏi hoặc phản hồi nào, hãy để lại bình luận.
