我可以让 zsh 扩展双引号中的波浪号吗?

我可以让 zsh 扩展双引号中的波浪号吗?

自从我发现可以使用双引号中的文件名补全功能后,我就一直将其用于名称中带有空格的文件(例如/Library/Application Support)。它看起来比到处都是反斜杠的路径更美观,也更容易阅读。问题是,我的主文件夹中也有一些名称中带有空格的文件(~/Library/Application Support,我不能在那里使用引号,因为它们会转义波浪号。有什么方法可以关闭它吗?

答案1

我不这么认为。zsh 用户手册简单来说:

双引号允许部分(但不是全部)形式的内部替换。更具体地说,它们允许参数扩展、命令替换和算术替换,但不允许任何其他替换:进程替换不会发生,括号和初始波浪号和等号不会扩展,模式不是特殊的。这里有一个表格;左边的每个表达式都是一些命令行参数,结果显示如果它出现在引号外或双引号中,则会替换什么。

Expression      Outside quotes  In double quotes 
------------------------------------------------ 
...  
~/foo           /home/pws/foo   ~/foo

答案2

双引号中的波浪符号不会展开,但你也不需要它们。将起始引号波浪号,它就会按照你想要的方式工作:

~"/Library/Application Support"
~/"Library/Application Support"

或者,环境变量HOME扩展为相同的:

"$HOME/Library/Application Support"
"${HOME}/Library/Application Support"

相关内容