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

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

dirname 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とは異なって処理することに注意すること。

関連項目 UNIXユーティリティの一覧 basename パス (コンピュータ)

外部リンク