![](/img/trans.png)
[英]How to create a folder with a folder name containing spaces in linux?
[英]Getting name of containing Folder
我有一個要在許多目錄中復制的Shell腳本
在此腳本中,如何初始化變量
PARENT_FOLDER
以一種方式在其中存儲包含此腳本的文件夾的名稱(而不是絕對路徑)?
請注意,可以從任何文件夾運行此腳本。
提前致謝。
在大多數情況下,以下內容將獲取腳本所在目錄的絕對路徑:
PARENT_FOLDER=$(dirname "$(readlink -f "$0")")
(OSX和BSD可能缺少-f
選項,沒有該選項,路徑可能仍包含符號鏈接。)
如果只需要路徑中最終目錄的名稱,則只需添加一個步驟:
PARENT_FOLDER=$(dirname "$(readlink -f "$0")")
PARENT_FOLDER=${PARENT_FOLDER##*/}
在缺少readlink -f
但可以使用bash的系統上:
PARENT_FOLDER="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
PARENT_FOLDER=${PARENT_FOLDER##*/}
如果同時缺少readlink -f
和bash:
PARENT_FOLDER="$( cd "$( dirname "$0" )" && pwd )"
PARENT_FOLDER=${PARENT_FOLDER##*/}
要獲取當前目錄的父文件夾,可以使用以下命令
PARENT_FOLDER=$(pwd | awk -F"/" 'OFS="/"{$NF=""}1')
更新
也下面的命令可以工作
從命令dirname Print NAME的手冊頁中刪除其尾部/ component; 如果NAME不包含/,則輸出'。 (表示當前目錄)。
PARENT_FOLDER = $(目錄名“ $ PWD”)或
PARENT_FOLDER=$(dirname "$0")
PARENT_FOLDER=$(pwd | awk -F / '{if ($NF!="") print $NF; else print "/"}')
在Mac和Linux上都對我有用的最佳解決方案是
PARENT_FOLDER="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
PARENT_FOLDER=${PARENT_FOLDER##*/}
它是此鏈接中給出的答案的組合:
而@ John1024給出的答案
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.