3 回答

TA貢獻1866條經驗 獲得超5個贊
dirname以及basename您正在尋找的提取路徑分量的工具:
$ VAR=/home/me/mydir/file.c
$ DIR=$(dirname "${VAR}")
$ echo "${DIR}"
/home/me/mydir
$ basename "${VAR}"
file.c
他們不是內部的Bash命令,但他們是POSIX標準的一部分(見dirname,basename)等應可在絕大多數將要運行bash的系統。

TA貢獻1775條經驗 獲得超11個贊
$ export VAR=/home/me/mydir/file.c
$ export DIR=${VAR%/*}
$ echo "${DIR}"
/home/me/mydir
$ echo "${VAR##*/}"
file.c
為了避免對basename和的依賴dirname

TA貢獻1847條經驗 獲得超7個贊
值得一提的是,如果只有文件名或相對路徑,那么單獨使用dirname將無濟于事。對我而言,答案最終是readlink。
fname='txtfile'
echo $(dirname "$fname") # output: .
echo $(readlink -f "$fname") # output: /home/me/work/txtfile
然后,您可以將兩者結合起來以獲得目錄。
echo $(dirname $(readlink -f "$fname")) # output: /home/me/work
- 3 回答
- 0 關注
- 713 瀏覽
添加回答
舉報