basenameとは、パス名からディレクトリ名を削除して、ファイル名だけを抽出する Linux/Unix コマンドである。
basename path [suffix]
basename [option]... path
以下に示す引数を basename コマンドに指定できる。
引数にパス名だけを指定した場合、ファイル名が抽出される。
$ basename /home/tsuka/example.c
example.c
$ basename ./tsuka/example.h
example.h
$ basename tsuka/example.o
example.o
なお、basename
コマンドは引数に渡されたパスの存在チェックは行わない。basename コマンドの引数に存在しないパスを渡しても、エラーは発生しない。
引数にパス名とサフィックスを指定した場合、ファイル名を抽出したうえ、サフィックスが削除される。たとえば、サフィックスにファイル拡張子を指定すると、パス名から拡張子無しのファイル名が抽出される。
$ 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 コマンドに指定できる。
$ basename -a /home/tsuka/example.c /home/tsuka/example.h
example.c
example.h
$ basename -multiple /home/tsuka/example.c /home/tsuka/example.h
example.c
example.h
$ basename -s .c -a /home/tsuka/foo.c /home/tsuka/bar.c
foo
bar
$ basename -z -a /home/tsuka/example.c /home/tsuka/example.h
example.cexample.h
なし
標準出力
コマンドが終了すると、親プロセスへ終了ステータスが渡される。basename コマンドの終了ステータスは、以下に示すいずれかの値である。
$ basename /home/tsuka/example.c
example.c
$ echo $?
0
$ basename
basename: missing operand
Try 'basename --help' for more information.
$ echo $?
1
$ dirname /home/tsuka/example.c
/home/tsuka