捕获变量中符号链接指向的文件名

捕获变量中符号链接指向的文件名

假设我有一个符号链接:

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

假设我有一个 shell 变量x=/path/to/foo,我怎样才能some_file.txt进入 shell 变量y

答案1

zsh

y=${x:A:t}

将扩展到 的绝对路径的尾部$x。所以除非some_file.txtsome_file.txt本身是其他东西的符号链接。

否则,您可以使用zsh zstat内置的:

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

答案2

您可以使用readlink获取目标文件的路径名,然后basename提取其文件名:

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

相关内容