basename
và dirname
là hai câu lệnh dòng lệnh được sử dụng để trích xuất tên thư mục và đường dẫn của một đường dẫn file hoặc thư mục.
Lấy thư mục cha.
Bạn có thể sử dụng lệnh dirname
để trích xuất tên thư mục cha từ đường dẫn hiện tại. Ví dụ, để tách đường dẫn /home/wordpress
thành /home
, bạn có thể sử dụng lệnh sau trong Bash:
source='/home/wordpress'
parent=$(dirname "$source")
echo "$parent"
Kết quả sẽ là /home
. Trong đó, biến parent
chứa tên thư mục cha của đường dẫn hiện tại được lấy bằng lệnh dirname
, sau đó in kết quả sử dụng lệnh echo
.
Lấy thư mục con.
Để lấy tên thư mục con từ đường dẫn /home/wordpress
, bạn có thể sử dụng lệnh basename
trong Bash như sau:
source='/home/wordpress'
child=$(basename "$source")
echo "$child"
Kết quả sẽ là wordpress
. Trong đó, biến child
chứa tên thư mục con của đường dẫn hiện tại được lấy bằng lệnh basename
, sau đó in kết quả sử dụng lệnh echo
.
Ví dụ kết hợp.
Ví dụ 1: Bạn có thể sử dụng câu lệnh basename
để lấy tên của thư mục từ đường dẫn đầy đủ. Ví dụ, để lấy tên của thư mục “wordpress” từ đường dẫn “/home/wordpress/hoanghd”, bạn có thể sử dụng lệnh:
basename $(dirname "/home/wordpress/hoanghd")
Kết quả sẽ là “wordpress”.
Tương tự, để lấy tên của thư mục “hoanghd”, bạn có thể sử dụng lệnh:
basename "/home/wordpress/hoanghd"
Kết quả sẽ là “hoanghd”.
Nếu bạn muốn lấy tên của thư mục “wordpress” từ đường dẫn “/home/wordpress/hoanghd”, bạn có thể sử dụng lệnh:
basename $(dirname $(dirname "/home/wordpress/hoanghd"))
Hoặc có thể sử dụng lệnh:
echo "/home/wordpress/hoanghd" | awk -F/ '{print $(NF-1)}'
Cả hai lệnh đều sẽ cho kết quả là “wordpress”.
Ví dụ 2: Bạn có thể sử dụng câu lệnh basename
kết hợp với ký tự %
để loại bỏ phần đầu của đường dẫn và giữ lại phần cuối cùng, sau đó sử dụng ký tự .
để lấy đuôi file.
$ file="/home/wordpress/wiki.sql"
$ extension="${file##*.}"
$ echo $extension
sql
Trong đó, ${file##*.}
sẽ loại bỏ phần đầu của biến $file
và giữ lại phần cuối cùng sau dấu chấm, nghĩa là đuôi của file. Sau đó, chúng ta gán giá trị này cho biến extension
để lấy được đuôi file.