Thứ Sáu, 28 tháng 7, 2023

Cách dùng lệnh basename trong Linux

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

=============================
Cách dùng lệnh basename trong Linux, oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master