Trong bài này chúng ta sẽ học cách sử dụng lệnh basename thông qua cú pháp và những ví dụ thực hành cơ bản nhất nhé.
basename là một tiện ích dòng lệnh (command line) dùng để lấy tên file dựa vào chuỗi đường dẫn được nhập vào. Ngoài ra, nó cũng có thể xóa luôn cả dấu gạch chéo nếu nó xuất hiện ở vị trí cuối cùng trong chuỗi mà bạn đã nhập vào.
Mục lục
- 1. Cú pháp lệnh basename trong Linux
- 2. Truyền nhiều chuỗi vào lệnh basename
- 3. Loại bỏ hậu tố của chuỗi theo yêu cầu bằng lệnh basename
- 4. Một ví dụ thực tế về lệnh basename trong bash script
1. Cú pháp lệnh basename trong Linux
Cú pháp của lệnh này trong Linux như sau:
1 2 | basename NAME [SUFFIX] basename OPTION... NAME... |
Lệnh basename sẽ lấy tên file và in ra thành phần cuối cùng của tên file. Nó cũng có thể được dùng để xóa các hậu tố thông qua những tùy chọn mà chúng ta sẽ tìm hiểu ở phần 2.
Bài viết này được đăng tại tranvanbinh.vn
Ví dụ cơ bản nhất là in ra tên file bằng cách loại bỏ đi đường dẫn các thư mục mà file này đang đứng:
1 | basename /etc/passwd |
Kết quả:
1 | passwd |
Nếu chuỗi bạn truyền vào có dấu gạch chéo cuối cùng thì nó cũng xóa luôn dấu gạch chéo đó.
1 2 | basename /usr/local/ basename /usr/local |
Cả hai đều có kết quả là:
1 2 | local local |
2. Truyền nhiều chuỗi vào lệnh basename
Câu hỏi đặt ra là nếu ta truyền nhiều chuỗi vào lệnh basename thì chuyện gì sẽ xảy ra?
Thực tế thì lệnh basename chấp nhận nhiều đối số được truyền vào. Để làm điều này thì bạn hãy thêm tùy chọn -a(--miltiple) như sau:
1 | basename -a /etc/passwd /etc/shadow |
Kết quả:
1 2 | passwd shadow |
Cách gọi này chính là cách gọi rút gọn, thay vì gọi hai lần lệnh basename thì ta chỉ gọi một lần mà thôi.
3. Loại bỏ hậu tố của chuỗi theo yêu cầu bằng lệnh basename
Để loại bỏ hậu tố theo ý của mình thì bạn truyền vào hai tham số, trong đó tham số đầu tiên là chuỗi cần xử lý, tham số thứ hai là hậu tố muốn loại bỏ.
1 | basename /etc/hostname name |
Kết quả:
1 | host |
Nếu chạy lệnh bình thường thì nó sẽ trả về là hostname, nhưng vì ta truyền thêm tham số thứ hai là name nên trong kết quả trả về chuỗi hậu tố name cũng bị xóa.
Thông thường chúng ta dùng cách này để lấy tên file nhưng loại bỏ đi phần đuôi mở rộng.
1 | basename /etc/sysctl .conf .conf |
Kết quả:
1 | sysctl |
Một cách khác là ta se chỉ định hậu tố cần xóa với tùy chọn -s(--suffix).
1 | basename -s .conf /etc/sysctl .conf |
Kết quả:
1 | sysctl |
Với cách này bạn cũng có thể áp dụng xử lý cho nhiều chuỗi cùng lúc.
1 | basename -a -s .conf /etc/sysctl .conf /etc/sudo .conf |
Kết quả:
1 2 | sysctl sudo |
4. Một ví dụ thực tế về lệnh basename trong bash script
Chúng ta sẽ viết một đoạn mã script dùng để đổi tên tất cả các file hình như sau:
1 2 3 | for file in *.jpeg; do mv -- "$file" "$(basename $file .jpeg).jpg" done |
Đoạn code trên mình dùng lệnh mv để đổi tên file từ jpeg
sang jpg
.
Như vậy là chúng ta đã tìm hiểu xong cách sử dụng lệnh basename trong Linux, đây là lệnh được sử dụng để trích xuất giá trị cuối cùng của một chuỗi theo ký tự gạch chéo.
Thông thường chúng ta sử dụng basename command để xử lý đường dẫn URL và tên file trong Linux.
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội
=============================