名称
basename, dirname ― パス名の一部の取り出し
構文
basename string [suffix]
dirname [string]
説明
basename は / で終わるすべてのプレフィックスと ( string の中にあれば) suffix を、 string から削除し その結果を標準出力に出力します。 string がスラッシュ文字だけで構成される場合には、 string はスラッシュ 1 文字に設定されます。 string に続けてスラッシュ文字がある場合は削除されます。
拡張子オペランドが存在しても、 string の残りの文字と同じでない場合や、 string の残りの文字の拡張子と同じ場合には、 拡張子は string から削除されます。 basename は通常シェルプロシージャの中の
コマンド置換えマーク (\`...\`)
内で使用されます。
dirname は string の中にあるパス名を構成する一番下のディレクトリを除いたすべてのディレクトリを抽出します。 string にディレクトリ構成要素がなければ、 dirname は . を戻し、
現在のワークディレクトリを示します。
多言語化対応
環境変数
LC_CTYPE は、string および basename の場合の
suffix を、シングルバイト文字およびマルチバイト文字またはそのいずれかとして解釈することを確定します。
現在の環境で、 LC_CTYPE が指定されていない場合や、 LC_CTYPE が空の文字列に設定されている場合には、 LANG の値がその変数のデフォルトとして使用されます。 LANG が指定されていなかったり、空の文字列に設定されている場合には、デフォルトの
"C"( lang(5) 参照) が LANG のかわりに使われます。
多言語化対応変数の 設定に不適当なものがある場合には、 basename および dirname はすべての多言語化対応変数が"C"に設定されているものとして動作します。 environ(5) を参照してください。
サポートされるコードセット
シングルバイトおよびマルチバイトの文字コードセットがサポートされます。
例
次のシェルスクリプトが、引き数に /usr/src/cmd/cat.c を付けて実行すると、
指定ファイルがコンパイルされ、 現在のディレクトリにある cat という名前のファイルに出力されます。
cc $1
mv a.out `basename $1 .c`
次の例では、シェル変数 NAME を /usr/src/cmd に設定します。
NAME=\`dirname /usr/src/cmd/cat.c\`
戻り値
basename および dirname は、次の値のいずれかを返します。
| 0 | | 正常終了。 |
| 1 | | コマンド行の引き数の数が誤っている。 |
標準準拠
basename: SVID2, SVID3, XPG2, XPG3, XPG4,
POSIX.2
dirname: SVID2, SVID3, XPG2, XPG3, XPG4,
POSIX.2