$ {PWD:A}是什么意思?

时间:2016-04-27 12:34:09

标签: zsh

我正在阅读一些zsh脚本,并发现了这种语法${PWD:A}。我知道$ PWD是什么以及bash变量替换语法(很大程度上要归功于this excellent tutorial)。尽管如此,我还没有找到任何文档来解释zsh的$ {variable:flag}语法。

1 个答案:

答案 0 :(得分:1)

${PWD:A}返回$PWD的无符号链接绝对路径。它通过以下方式实现:

  • 在当前目录前加上
  • 解析任何...
  • 解析符号链接,如果系统具有realpath系统调用 - 现代系统会执行此操作。

由于$PWD已经当前目录的绝对路径,并且不包含...个元素(至少它实际上不应该), ${PWD:A}只需解析任何符号链接。

${name:flag}语法允许在参数上使用历史扩展修饰符

实际上 Parameter Expansion of the ZSH Manual部分中进行了解释(另请参阅man zshexpn)。不幸的是,它只是文本中的一个句子,并未与其他${nameXXXXX}扩展列出:

  

除了以下操作之外,还可以应用历史记录扩展中的修饰符中描述的冒号修饰符:例如,${i:s/foo/bar/}对参数$i的扩展执行字符串替换。

可以在Modifiers under History Expansion小节中找到可用修饰符的列表。如果是A

  

a

     

将文件名转换为绝对路径:如有必要,请在当前目录前添加,并解决路径中...的任何使用问题。请注意,即使文件或任何中间目录不存在,也会发生转换。

     

A

     

作为a,但也尽可能解决符号链接的使用问题。请注意,..的分辨率在符号链接解析之前发生。此调用等同于a,除非您的系统具有realpath系统调用(现代系统)。