次のアプローチを使用して、パス名の任意のパスを取得できます:
some_path=a/b/c
echo $(basename $some_path)
echo $(basename $(dirname $some_path))
echo $(basename $(dirname $(dirname $some_path)))
出力:
c
b
a
Bash は、外部の basename
を呼び出すことなく、パスの最後の部分を取得できます。 :
dir="/path/to/whatever/"
dir="${dir%/}" # strip trailing slash (if any)
subdir="${dir##*/}"
これは、Bash のパラメーター拡張を使用して、最後の (残りの) スラッシュの前の文字列の部分を削除します。
basename
パスのディレクトリ接頭辞を削除します:
$ basename /usr/local/svn/repos/example
example
$ echo "/server/root/$(basename /usr/local/svn/repos/example)"
/server/root/example
外部コマンドを使用せずにファイル名を出力するには、
実行:
fileNameWithFullPath="${fileNameWithFullPath%/}";
echo "${fileNameWithFullPath##*/}" # print the file name
このコマンドは basename
よりも速く実行する必要があります と dirname
.