带有前导 -(破折号)的文件的基本名称

basename of file with a leading - (dash)

我对 zsh 脚本中的基本名称有疑问。想象一下 $directory 包含一个带有前导破折号的文件名,在我的例子中它是“-Fast-”。然后脚本执行

        folder=$(basename "$directory")

或者如果我尝试

的其他语法
        folder=`basename "$directory"`

两者都会导致相同的错误:

basename: 非法选项 -- F 用法:基本名称字符串[后缀] 基本名称 [-a] [-s 后缀] 字符串 [...]

除了不使用带前导破折号的文件(这可能很难向普通用户解释),我该怎么办? 谢谢!

在大多数命令中,您可以使用双破折号 -- 来表示“参数结束”。

folder=`basename -- "$directory"`

如何完全避免 basename 而只做

folder=$directory:t

顺便说一句,如果你想要等同于 dirname(即目录部分),它将是 $directory:h