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 关注
- 660 浏览
添加回答
举报