basename

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

構文

basename path [suffix]
basename [option]... path

引数

以下に示す引数を 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

オプション

Linux/Unixコマンドに指定できるオプションには、POSIXとGNUの2種類の形式がある。POSIXの場合、オプションはハイフンで始まり、アルファベット1文字で指定する。GNUの場合、オプションはハイフン2つから始まり、複数のアルファベットで指定する。

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

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

入力

なし

出力

標準出力

終了ステータス

コマンドが終了すると、親プロセスへ終了ステータスが渡される。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