dirnameは標準UNIXコンピュータプログラムである。dirnameパス名を与えると、その最後にあるスラッシュ ('/') 文字で始まる接尾辞を削除したものを結果として返す。dirnameSingle UNIX Specificationに記述されており主にシェルスクリプトで使われる。


使い方 編集

dirnameのSingle UNIX Specification仕様によると、以下のようなコマンドである。

dirname string
string
パス

編集

dirnameは後に続くスラッシュを無視することでパス名からディレクトリパス名を抽出する。

$ dirname /home/carpetsmoker/docs/base.wiki
/home/carpetsmoker/docs
$ dirname /home/carpetsmoker/docs/
/home/carpetsmoker
$ dirname base.wiki 
.
$ dirname /
/

パフォーマンス 編集

dirnameは1つのオペランドしか受け入れないので、シェルスクリプトの内部ループ内で使用するとパフォーマンスに有害となる可能性がある。

 while read file; do
     dirname "$file"
 done < some-input

上記の例では入力行ごとにプロセスを呼び出してしまう。このため、通常はシェル置換を代わりに使用する。

 echo "${file%/*}";

また処理を必要とする関連パス名も同様である。

 if [ -n "${file##*/*}" ]; then
     echo "."
 else
     echo "${file%/*}";
 fi

これらの処理は後に続くスラッシュをdirnameとは異なって処理することに注意すること。

関連項目 編集

外部リンク 編集

  • dirname: return the directory portion of a pathname – The Open Group基本仕様書第7号2018年版「シェル及びユーティリティ」