Linux中的dirname命令會打印出一個文件路徑,并將其最后的組件刪除。這基本上可以從文件路徑中得到目錄路徑。
這在你想從長文件路徑中提取目錄路徑的bash腳本中特別有用。
dirname 命令是 basename 命令的補充。basename命令從路徑中提取文件名,而dirname則是提取目錄路徑。
下面用一些例子來告訴大家。
Dirname命令的例子
dirname命令的語法簡單明了:
dirname OPTION PATH
將dirname命令與文件的絕對路徑一起使用將給出目錄路徑:
dirname /home/user/data/filename.txt
/home/user/data
像basename命令一樣,dirname命令實際上也是愚蠢的。它不能真正識別文件路徑。它只查找斜杠(/)并打印最后一個斜杠之前的內(nèi)容?;旧?,您可以給它帶/的任何字符串,并且可以在其上使用。
例如,我在這里使用一個隨機(jī)字符串,其中沒有文件名。您可以看到它仍然可以正常工作,并輸出一個字符串,刪除最后一個/及其后面的文本。
如果路徑中沒有斜線(/),它將輸出一個點(.)表示當(dāng)前目錄。
你也可以使用多路徑的dirname。它將在一個新的行中返回每個路徑的輸出。
您可以使用-z選項在同一行中獲得結(jié)果,并以NULL字符分隔輸出。
在bash腳本中使用目錄名
讓我們談?wù)勗赽ash腳本中使用目錄名。
假設(shè)您有一個文件路徑變量,并且想要獲取包含該文件的目錄的路徑。這可能是一個簡單的腳本:
pathname=”/home/dir/data/filename”
result=$(dirname “$pathname”)
echo $result
如前所述,dirname命令是basename命令的補充。與dirname不同,basename命令僅輸出路徑的最后一部分。