从文件路径获取文件目录路径

如果在Bash中,VAR="/home/me/mydir/file.c"我如何获得"/home/me/mydir"



斯蒂芬大帝
浏览 606回答 3
3回答

心有法竹

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的系统。

繁星淼淼

$ export VAR=/home/me/mydir/file.c$ export DIR=${VAR%/*}$ echo "${DIR}"/home/me/mydir$ echo "${VAR##*/}"file.c为了避免对basename和的依赖dirname

aluckdog

值得一提的是,如果只有文件名或相对路径,那么单独使用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
打开App,查看更多内容
随时随地看视频慕课网APP