shell 中擷取檔案真實路徑(絕對路徑)

來源:互聯網
上載者:User

shell 指令碼中,通常會使用相對路徑來做處理,但有時候,我們也許需要用到絕對路徑。
在shell怎麼擷取一個檔案或目錄的絕對路徑呢。
也許你會立馬想到realpath(如果你寫過php的話),那麼shell支援這個命令嗎。看一下這裡你就知道了。
Realpath appears to come from debian, and is not part of coreutils,Realpath appears not to be standard issue.
這個命令並不是總是可用的。 其實我們可以使用readlink命令:readlink -f  file_path
file_real_path=$(readlink -f .)    擷取當前的真實路徑
file_real_path=$(readlink -f ../..)    擷取上上一級的真實路徑
這樣就可以獲得檔案的絕對路徑了,readlink的具體用法請自行man readlink。

Readlink對於softlink的處理拿到的是實際的檔案路徑,而不是softlink路徑。

更好用的擷取當前執行指令碼的路徑的方法為: 

CURDIR=$(cd $(dirname ${BASH_SOURCE[0]}); pwd )

echo $CURDIR 

其他的常用路徑有:

擷取當前執行指令碼的路徑 
filepath=$(cd "$(dirname "$0")"; pwd) 

echo "$(basename $0) $(dirname $0) -- $filepath " 
指令檔的絕對路徑存在了環境變數filepath中,可以用echo $filepath  


$0: 擷取當前指令碼的名稱 
$#: 傳遞給指令碼的參數個數 
$$: shell指令碼的進程號



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.