我有一个文件,我想得到那个文件所在的目录。在python中,我会这样做:
FILE_DIR = os.path.dirname(os.path.realpath(__file__))我如何在shell脚本中做同样的事情呢?如果我使用pwd,我将得到我正在执行命令的文件夹的当前目录,而不是我正在执行的文件的文件夹(这正是我所需要的)。
发布于 2014-09-29 22:55:40
在执行shell脚本时,$0是要执行的脚本的名称(参见Bash中针对初学者的变量章节中的特殊参数),相当于sys.argv[0]中的sys.argv[0](除非您已经调用了shift)。
dirname命令在Python中执行与os.path.dirname相同的操作。
没有可移植的直接等同于os.path.abspath、os.path.realpath和$0的东西。有一些特定于平台的方法(例如,在具有GNU的系统上使用readlink -f ),或者手动地将pwd与路径组合起来。请参阅Unix上的这个问题以获得各种不同的方法,但弗里普先生 回答似乎是最可移植的:
abspath=$(unset CDPATH && cd "$(dirname "$0")" && echo ${PWD}/$(basename "$0"))当然,您也可以要求Python这样做:
abspath=$(python -c "import os; print(os.path.realpath(\"$0\"))"
absdir=$(dirname "${abspath}")https://stackoverflow.com/questions/26110138
复制相似问题