[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

18.2 dirname: ファイル名から最後の要素を取り除く

dirname は、各 name からスラッシュで区切られた最後の要素を取り除いて、 残りのすべてを表示する。その際、最後の要素の左右どちらにあるスラッシュも除去される。 name を構成する文字列にスラッシュが一つも含まれない場合、 dirname は (カレントディレクトリを意味する) ‘.’ を表示する。

書式:

 
dirname [option] name

name は実在するファイル名でなくても構わないが、実在するファイル名ならば、 この操作によって、最後の要素それ自体がディレクトリである場合も含めて、 最後の要素が存在するディレクトリが、利用できる形で表示される。

basenamedirname は合わせて設計されており、もし ‘ls "$name"’ が成功するならば、‘cd "$(dirname "$name")"; ls "$(basename "$name")"’ というコマンドの連続も成功するようになっている。 これは、ファイル名の末尾に改行が付いている場合を除いて、あらゆる場合にうまく行く。

POSIX によれば、name が ‘//’ の場合に、結果がどうなるかは、 実装側で決めてよいことになっている。 GNU の dirname について言うと、/// とが別のものであるプラットフォームでは、結果は ‘//’ になり、 全く区別しないプラットフォームでは、結果は ‘/’ になる。

このプログラムでは、以下のオプションが使える。参照: 共通オプション.

-z
--zero

各行の末尾に改行ではなく、ゼロバイト (ASCII NUL) を出力する。このオプションを使用すると、出力するデータの途中に改行が現れる場合でも、 他のプログラムがその出力を解析できるようになる。

終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。

用例:

 
# "/usr/bin" を出力する。
dirname /usr/bin/sort
dirname /usr/bin//.//

# "dir1", "dir2" の順に出力する。
dirname dir1/str dir2/str

# "." を出力する。
dirname stdio.h

This document was generated on June 7, 2022 using texi2html 1.82.