変数のシンボリックリンクが指すファイル名をキャプチャします。

変数のシンボリックリンクが指すファイル名をキャプチャします。

シンボリックリンクがあるとしましょう。

/path/to/foo->/path/to/some_file.txt

シェル変数があるとしましょう。シェル変数にどのようにx=/path/to/foo入力できますか?some_file.txty

答え1

存在するzsh

y=${x:A:t}

絶対経路の最後まで拡張されます$x。したがって、some_file.txtそれsome_file.txt自体が他のものへのシンボリックリンクではない限り。

zsh zstatそれ以外の場合は、内蔵機能を使用できます。

zmodload zsh/zstat
zstat -A y +link -- $x && y=$y:t

答え2

あなたはそれを使用することができますreadlinkターゲットファイルのパス名を取得してからbasenameファイル名を抽出します。

y="$(basename -- "$(readlink -- "$x")")"

関連情報