Cách trích xuất tên tệp cơ sở mà không cần đường dẫn và phần mở rộng trong Bash

Cach Trich Xuat Ten Tep Co So Ma Khong Can Duong Dan Va Phan Mo Rong Trong Bash



Lệnh tên cơ sở thường được sử dụng trong Bash để truy xuất tên cơ sở của tệp hoặc thư mục từ một đường dẫn nhất định bằng cách xóa mọi thành phần thư mục hàng đầu. Bài viết này sẽ khám phá cách trích xuất tên cơ sở của tệp mà không có đường dẫn và phần mở rộng của nó bằng cách sử dụng bash.

Trích xuất tên tệp cơ sở mà không cần đường dẫn và tiện ích mở rộng trong Bash

Để trích xuất tên cơ sở của tệp mà không có đường dẫn và phần mở rộng của nó, chúng ta có thể sử dụng lệnh tên cơ sở kết hợp với tính năng thay thế tham số của bash. Lệnh tên cơ sở trả về thành phần cuối cùng của tên đường dẫn, trong trường hợp của chúng tôi sẽ là tên tệp có phần mở rộng của nó. Tuy nhiên, bằng cách chỉ định tùy chọn hậu tố, chúng ta có thể loại bỏ phần mở rộng khỏi tên tệp, đây là mã bash ví dụ:

#!bin/bash
đường dẫn tập tin = / trang chủ / aalyan / bash3.sh
S =$ ( tên cơ sở $filepath )
tiếng vang ' ${s%.*} '

Tập lệnh bash ở trên định nghĩa một biến có tên là “ đường dẫn tập tin ” và gán cho nó đường dẫn của tệp “ /home/aaliyan/bash3.sh “. Sau đó, tập lệnh sử dụng lệnh tên cơ sở để trích xuất tên cơ sở của tệp từ đường dẫn tệp và gán kết quả cho một biến có tên là “s”.







Phần mở rộng tham số thứ hai loại bỏ phần mở rộng khỏi tên tệp bằng cách loại bỏ kết quả khớp ngắn nhất có thể của bất kỳ số lượng ký tự nào theo sau dấu chấm bằng cách sử dụng “%.*”. Chuỗi kết quả, “bash3”, sau đó được in ra bàn điều khiển bằng cách sử dụng lệnh echo:





Một cách khác để trích xuất tên cơ sở của tệp mà không có đường dẫn tệp và phần mở rộng của nó là sử dụng phần mở rộng tham số mà không sử dụng lệnh tên cơ sở, bên dưới là mã bash ví dụ sử dụng phương pháp mở rộng tham số để lấy tên cơ sở của tệp mà không cần tệp đường dẫn và phần mở rộng tập tin:





#!bin/bash
đường dẫn tập tin = / trang chủ / aalyan / bash3.sh
S = ${filepath##*/}
tiếng vang ' ${s%.*} '

Đây là một tập lệnh bash xác định một biến có tên là “filepath” và gán cho nó giá trị “ /home/aaliyan/bash3.sh “. Sau đó, tập lệnh sử dụng tính năng mở rộng tham số của bash hai lần để trích xuất tên cơ sở của tệp mà không có đường dẫn và phần mở rộng của nó. Cụ thể, phần mở rộng tham số đầu tiên sẽ xóa đường dẫn khỏi tên tệp bằng cách xóa kết quả khớp dài nhất có thể của bất kỳ số lượng ký tự nào theo sau dấu gạch chéo lên bằng cách sử dụng “##/”.

Chuỗi kết quả, “ bash3.sh ” sau đó được gán cho một biến gọi là “s”. Phần mở rộng tham số thứ hai loại bỏ phần mở rộng khỏi tên tệp bằng cách loại bỏ kết quả khớp ngắn nhất có thể của bất kỳ số lượng ký tự nào theo sau dấu chấm bằng cách sử dụng “%.”. Chuỗi kết quả, “bash3”, sau đó được in ra bàn điều khiển bằng cách sử dụng lệnh echo:



Phần kết luận

Trích xuất tên cơ sở của một tệp mà không có đường dẫn và phần mở rộng của nó là một nhiệm vụ phổ biến trong tập lệnh bash. Bằng cách sử dụng lệnh basename kết hợp với các tính năng thay thế tham số và mở rộng tham số của bash, chúng ta có thể dễ dàng đạt được nhiệm vụ này. Điều này có thể hữu ích khi làm việc với tên tệp trong tập lệnh, chẳng hạn như khi đổi tên tệp hoặc thực hiện thao tác trên tệp có tên tương tự.