Đôi khi, khi làm việc trên dòng lệnh (đặc biệt là khi xử lý các tập lệnh shell), bạn có thể chỉ quan tâm đến tên tệp, nhưng những gì bạn có thể làm là đường dẫn đầy đủ của tệp. Vì vậy, yêu cầu là xóa thành phần thư mục khỏi đường dẫn.
Lệnh basename trong Linux là một tiện ích được sử dụng để trích xuất tên cơ sở của tệp hoặc đường dẫn thư mục, về cơ bản là xóa mọi thành phần thư mục dẫn đầu và hậu tố tùy chọn. Khi được cung cấp đường dẫn đầy đủ, lệnh basename chỉ trả về tên tệp hoặc đoạn cuối cùng của đường dẫn, giúp lệnh này hữu ích trong các tác vụ viết tập lệnh và thao tác tệp. Ví dụ: với đường dẫn /home/user/document.txt, basename sẽ trả về document.txt. Ngoài ra, người dùng có thể chỉ định hậu tố cần xóa, chẳng hạn như .txt, chỉ để lại document. Lệnh này đơn giản hóa việc xử lý tên tệp và đường dẫn trong các tập lệnh, tăng cường tự động hóa và hợp lý hóa nhiều quy trình quản lý tệp khác nhau.
Hướng dẫn này sẽ giải thích những điều cơ bản về 'basename' bằng các ví dụ dễ hiểu. Nhưng trước khi đi sâu vào vấn đề đó, cần lưu ý rằng tất cả các ví dụ ở đây đều đã được thử nghiệm trên máy Ubuntu 24.04 LTS.
Và đây là những gì trang hướng dẫn nói về nó:
Sau đây là một số ví dụ theo kiểu Hỏi & Đáp sẽ giúp bạn hiểu rõ hơn về cách lệnh basename hoạt động.
Tôi nhận được kết quả sau:
Và đây là kết quả tôi nhận được:
Ví dụ, lệnh sau:
tạo ra đầu ra này:
Ví dụ:
Và đây là kết quả:
Vì vậy, bạn không thấy ký tự NUL ở đây. Bạn cần chuyển hướng kết quả đến một tệp rồi mở tệp đó trong trình soạn thảo như vim. Đây là những gì vim đã hiển thị:
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22231%22%20height=%2223%22%3E%3C/svg%3E
Lệnh basename trong Linux là một tiện ích được sử dụng để trích xuất tên cơ sở của tệp hoặc đường dẫn thư mục, về cơ bản là xóa mọi thành phần thư mục dẫn đầu và hậu tố tùy chọn. Khi được cung cấp đường dẫn đầy đủ, lệnh basename chỉ trả về tên tệp hoặc đoạn cuối cùng của đường dẫn, giúp lệnh này hữu ích trong các tác vụ viết tập lệnh và thao tác tệp. Ví dụ: với đường dẫn /home/user/document.txt, basename sẽ trả về document.txt. Ngoài ra, người dùng có thể chỉ định hậu tố cần xóa, chẳng hạn như .txt, chỉ để lại document. Lệnh này đơn giản hóa việc xử lý tên tệp và đường dẫn trong các tập lệnh, tăng cường tự động hóa và hợp lý hóa nhiều quy trình quản lý tệp khác nhau.
Hướng dẫn này sẽ giải thích những điều cơ bản về 'basename' bằng các ví dụ dễ hiểu. Nhưng trước khi đi sâu vào vấn đề đó, cần lưu ý rằng tất cả các ví dụ ở đây đều đã được thử nghiệm trên máy Ubuntu 24.04 LTS.
Giải thích về lệnh basename trên Linux
Lệnh basename cho phép bạn loại bỏ các thành phần khỏi tên tệp không cần thiết. Sau đây là cú pháp của công cụ:
Mã:
basename NAME [SUFFIX]
basename OPTION... NAME...
Mã:
basename - xóa thư mục và hậu tố khỏi tên tệp
In TÊN với bất kỳ thành phần thư mục dẫn đầu nào bị xóa. Nếu được chỉ định, hãy xóa cả
SUFFIX theo sau.
Câu hỏi 1. Lệnh basename hoạt động như thế nào?
Theo mặc định, nếu bạn chạy lệnh 'basename' với đường dẫn đầy đủ đến tệp làm đầu vào, lệnh sẽ trả về tên tệp ở đầu ra. Ví dụ, khi tôi thực thi lệnh sau:
Mã:
basename /home/himanshu/Downloads/analytics.pdf
Mã:
analytics.pdf
Câu hỏi 2. Basename có thể xử lý nhiều đầu vào không?
Có, có thể. Nhưng để điều này xảy ra, bạn phải sử dụng tùy chọn dòng lệnh -a. Ví dụ, khi tôi thực thi lệnh sau:
Mã:
basename -a /home/himanshu/Downloads/analytics.pdf /home/himanshu/Pictures/test.png
Mã:
analytics.pdf
test.png
Câu hỏi 3. Làm thế nào để basename cũng xóa phần mở rộng tệp?
Đôi khi, bạn chỉ muốn lấy tên tệp chứ không phải phần mở rộng của tệp. Bạn có thể thực hiện việc này bằng tùy chọn dòng lệnh -s (yêu cầu bạn phải truyền hậu tố làm đầu vào).Ví dụ, lệnh sau:
Mã:
basename -s .pdf /home/himanshu/Downloads/analytics.pdf
Mã:
analytics
Câu hỏi 4. Làm thế nào để kết thúc mỗi dòng đầu ra bằng NUL?
Theo mặc định, ký tự xuống dòng được sử dụng làm dấu phân cách trong đầu ra. Tuy nhiên, bạn có thể buộc basename sử dụng NUL làm dấu phân cách nếu muốn. Bạn có thể thực hiện việc này bằng tùy chọn dòng lệnh -z.Ví dụ:
Mã:
basename -az /home/himanshu/Downloads/analytics.pdf /home/himanshu/Pictures/test.png
Mã:
analytics.pdftest.png
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22231%22%20height=%2223%22%3E%3C/svg%3E