dirname
dirnameは標準UNIXコンピュータプログラムである。dirnameはパス名を与えると、その最後にあるスラッシュ ('/'
) 文字で始まる接尾辞を削除したものを結果として返す。dirnameはSingle 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年版「シェル及びユーティリティ」