用途說明
dirname命令可以取給定路徑的目錄部分(strip non-directory suffix from file name)。這個命令很少直接在shell命令行中使用,我一般把它用在shell腳本中,用於取得腳本文件所在目錄,然后將當前目錄切換過去。根據手冊頁上說的“Print NAME with its trailing /component removed; if NAME contains no /’s, output ‘.’ (meaning the current directory).”,似乎說“取給定路徑的目錄部分” 並不能很准確的概括dirname命令的用途。Linux下還有一個命令是basename,它與dirname相反,是取得文件名稱部分。
常用參數
無。
使用示例
示例一 來自手冊頁的例子
[root@qzt196 ~]# dirname /usr/bin/sort
/usr/bin
[root@qzt196 ~]# dirname stdio.h
.
[root@qzt196 ~]#
示例二
[root@qzt196 ~]# dirname /usr/bin
/usr
[root@qzt196 ~]# dirname /usr/bin/
/usr
注意:此處的輸出結果,似乎有點怪。這應該看下dirname命令的源代碼才能解釋了。
示例三 在bash腳本中的運用
- #!/bin/sh
- # 跳轉到腳本所在目錄
- cd $(dirname "$0") || exit 1
- # 剩下的部分
這個寫法我經常用到,因為有時候腳本執行時無法確定是在哪個目錄,比如腳本用在crontab中時。
另一個寫法是:cd `dirname $0` 其中反引號··等同於$()。