我正在使用卸载程序脚本来删除安装脚本的父文件夹。
/usr/local/Myapplication/Uninstaller/uninstall.sh
所以uninstall.sh必须这样做:
rm- rf /usr/local/Myapplication
我可以检索卸载所在的文件夹
SYMLINKS=$(readlink -f "$0")
UNINSTALL_PATH=$(dirname "$SYMLINKS")
但是我仍然不确定获得父路径的漂亮方式。 我想过使用sed去除这条路径的“Uninstaller”部分,但是有一种优雅的方法来获取Myapplication文件夹的路径来删除它吗?
谢谢
答案 0 :(得分:12)
两次使用dirname
怎么样?
APP_ROOT="$(dirname "$(dirname "$(readlink -fm "$0")")")"
引用desaster只是为了防止路径中的空白。否则它会更令人愉悦:
APP_ROOT=$(dirname $(dirname $(readlink -fm $0)))
答案 1 :(得分:4)
只需获取父目录的父目录:
my_app_path=$(dirname $(dirname $(readlink -f "$0")))
答案 2 :(得分:4)
获取父目录路径的最终简单方法:
PARENT_DIRECTORY="${PWD%/*}"
答案 3 :(得分:3)
如果您需要绝对路径,则需要cd
。否则你可以使用$(dirname $0)/..
cd $(dirname $0)/..
path=$(pwd)
cd - # go back
答案 4 :(得分:2)
脚本父目录的完整路径,即“/ usr / local / bin / bla”:export PARENT_OF_THIS_SCRIPT=$( cd $(dirname $0) ; pwd -P )
只是最新的脚本父级,即“bla”:export PARENT_DIR_OF_SCRIPT=$( cd $(dirname $0) ; pwd -P | xargs basename )
答案 5 :(得分:1)
为什么不在路径的末尾添加../?
答案 6 :(得分:1)
我放了这个answer as comment at 2018。但是,由于我对解决方案的有效性有很好的反馈,因此我也会在这里分享它:
# dir of script
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )";
# parent dir of that dir
PARENT_DIRECTORY="${DIR%/*}"