[英]Retrieve parent directory of script
我正在處理卸載程序腳本以刪除安裝腳本的父文件夾。
/usr/local/Myapplication/Uninstaller/uninstall.sh
所以uninstall.sh必須這樣做:
rm- rf /usr/local/Myapplication
我可以檢索卸載所在的文件夾
SYMLINKS=$(readlink -f "$0")
UNINSTALL_PATH=$(dirname "$SYMLINKS")
但我仍然不確定獲得父路徑的漂亮方法。 我想使用 sed 來卸載此路徑的“卸載程序”部分,但是有沒有一種優雅的方法來獲取 Myapplication 文件夾的路徑以將其刪除?
謝謝
兩次使用dirname
怎么樣?
APP_ROOT="$(dirname "$(dirname "$(readlink -fm "$0")")")"
引用 desaster 只需要防止路徑中的空格。 否則會更順眼:
APP_ROOT=$(dirname $(dirname $(readlink -fm $0)))
只需獲取父目錄的父目錄:
my_app_path=$(dirname $(dirname $(readlink -f "$0")))
獲取父目錄路徑的終極簡單方法:
PARENT_DIRECTORY="${PWD%/*}"
如果您需要絕對路徑,則需要cd
。 否則你可以只使用$(dirname $0)/..
cd $(dirname $0)/..
path=$(pwd)
cd - # go back
腳本父目錄的完整路徑,即“/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 )
我將此 答案作為評論放在 2018 。 但是由於我得到了關於解決方案有效性的很好的反饋,我也將在這里分享:
# dir of script
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )";
# parent dir of that dir
PARENT_DIRECTORY="${DIR%/*}"
為什么不簡單地在路徑末尾添加 ../ ?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.