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

18.1 basename: ファイル名からディレクトリと接尾辞を取り除く

basename は、name の先頭にディレクトリ部分があれば、それを取り除く。

書式:

 
basename name [suffix]
basename optionname

suffix が指定されていて、それが name の末尾と同一ならば、 suffix の部分も name から取り除かれる。 気をつけていただきたいが、ファイル名の末尾のスラッシュは、接尾辞のマッチングに先立って除去されるので、 suffix にスラッシュが含まれていると、指定に効果がないことになる。 basename は、結果を標準出力に表示する。

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

POSIX によれば、name が空の場合や ‘//’ の場合に、結果がどうなるかは、 実装側で決めてよいことになっている。前者の場合、GNU の basename は、空文字列を返す。 後者の場合、/// とが別のものであるプラットフォームでは、結果は ‘//’ になり、全く区別しないプラットフォームでは、結果は ‘/’ になる。

このプログラムでは以下のオプションが使用できる。参照: 共通オプション. オプションはオペランドの前に置かなければならない。

-a
--multiple

複数の引数を受け付ける。すべての引数は name として処理される。 このオプションを使用する場合、suffix を指定するならば、‘-s’ オプションを使わなければならない。

-s suffix
--suffix=suffix

末尾にある suffix を除去する。このオプションを指定すると ‘-a’ オプションも指定したことになる。

-z
--zero

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

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

用例:

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

# "stdio" を出力する。
basename include/stdio.h .h

# "stdio" を出力する。
basename -s .h include/stdio.h

# "stdio", "stdlib" の順に出力する。
basename -a -s .h include/stdio.h include/stdlib.h

This document was generated on August 15, 2017 using texi2html 1.82.