basename

basenameとは、パス名からディレクトリ名を削除して、ファイル名だけを抽出する Linux/Unix コマンドである。

basename
引数 出力
/home/tsuka/example.c example.c
./tsuka/example.h example.h
tsuka/example.o example.o

構文

basename [options] path [suffix]

引数

以下に示す引数を basename コマンドに指定できる。

path
ファイル名を抽出するパス

引数にパス名だけを指定した場合、ファイル名が抽出される。

$ basename /home/tsuka/example.c
example.c
$ basename ./tsuka/example.h
example.h
$ basename tsuka/example.o
example.o
$

なお、basename コマンドは引数に渡されたパスの存在チェックは行わない。basename コマンドの引数に存在しないパスを渡しても、エラーは発生しない。

suffix
引数にパス名とサフィックス(接尾辞)を指定した場合、ファイル名を抽出したうえ、サフィックスが削除される。たとえば、サフィックスにファイル拡張子を指定すると、パス名から拡張子無しのファイル名が抽出される。
$ basename /home/tsuka/example.c .c
example
$ basename ./tsuka/example.h .h
example
$ basename tsuka/example.o .o
example
$

オプション

以下に示すオプションを basename コマンドに指定できる。

-a
複数のパス名を指定できるようになり、それぞれのファイル名を出力する。
$ basename -a /home/tsuka/example.c /home/tsuka/example.h
example.c
example.h
--multiple
複数のパス名を指定できるようになり、それぞれのファイル名を出力する。GNU 形式のオプションであり、POSIX 形式の -a オプションと同じ機能である。
-s suffix
出力時に削除するサフィックス(ファイルの拡張子)を指定する。-a オプションと共に指定する。
$ basename -s .c -a /home/tsuka/foo.c /home/tsuka/bar.c
foo
bar
--suffix=suffix
出力時に削除するサフィックスを指定する。--multiple オプションと共に指定する。GNU 形式のオプションであり、POSIX 形式の -s オプションと同じ機能である。
-z
出力の最後に改行を付けない。
$ basename -z -a /home/tsuka/example.c /home/tsuka/example.h
example.cexample.h
--zero
出力の最後に改行を付けない。GNU 形式のオプションであり、POSIX 形式の -z オプションと同じ機能である。
--help
ヘルプを表示して終了する。
--version
バージョン情報を出力して終了する。

入力

なし

出力

標準出力

終了ステータス

コマンドが終了すると、親プロセスへ終了ステータスが渡される。basename コマンドの終了ステータスは、以下に示すいずれかの値である。

0
成功
$ basename /home/tsuka/example.c
example.c
$ echo $?
0
>0
エラー
$ basename
basename: missing operand
Try 'basename --help' for more information.
$ echo $?
1

関連コマンド

dirname
パス名からディレクトリ名だけを抽出する。
$ dirname /home/tsuka/example.c
/home/tsuka