簡體   English   中英

獲取包含文件夾的名稱

[英]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##*/}

它是此鏈接中給出的答案的組合:

從內部獲取Bash腳本的源目錄

而@ John1024給出的答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM