Pendekatan berikut dapat digunakan untuk mendapatkan jalur apa pun dari nama jalur:
some_path=a/b/c
echo $(basename $some_path)
echo $(basename $(dirname $some_path))
echo $(basename $(dirname $(dirname $some_path)))
Keluaran:
c
b
a
Bash bisa mendapatkan bagian terakhir dari suatu jalur tanpa harus memanggil basename
eksternal :
dir="/path/to/whatever/"
dir="${dir%/}" # strip trailing slash (if any)
subdir="${dir##*/}"
Ini menggunakan ekspansi parameter Bash untuk menghapus bagian dari string sebelum garis miring (tersisa) terakhir.
basename
tidak menghapus awalan direktori dari sebuah path:
$ basename /usr/local/svn/repos/example
example
$ echo "/server/root/$(basename /usr/local/svn/repos/example)"
/server/root/example
Untuk mencetak nama file tanpa menggunakan perintah eksternal,
Jalankan:
fileNameWithFullPath="${fileNameWithFullPath%/}";
echo "${fileNameWithFullPath##*/}" # print the file name
Perintah ini harus berjalan lebih cepat dari basename
dan dirname
.
Menggunakan output dari perintah sebelumnya di bash
Apakah ada API C untuk mengekstrak nama file dasar dari jalur lengkapnya di Linux?