我在两个不同版本的 Ubuntu 上使用了 stat,它打印了不同类型的引号。
14.04(coreutils 8.21-1ubuntu5.1):
$ stat --format %N test.txt
‘test.txt’
16.04(coreutils 8.25-2ubuntu2):
$ stat --format %N test.txt
'test.txt'
为什么stat
在旧版本中使用这种不常见的引用样式?有没有办法告诉stat
它应该使用哪种类型的引用?
编辑
我知道在 8.26 版本中引入了 stat 的引用样式(https://savannah.gnu.org/forum/forum.php?forum_id=8745):
stat --format=%N for quoting file names now honors the
same QUOTING_STYLE environment variable values as ls.
但在此更改之前,版本之间应该有一致的行为,或者是否还有我不知道的其他更改?
答案1
'
%N
' 格式可以通过环境变量来设置QUOTING_STYLE
。如果未设置该环境变量,则默认值为‘shell-escape
'.有效的引用样式是:'
literal
'
按原样输出字符串;这与-N
或选项相同--literal
。...
'
shell-escape
'
与 ' ' 类似,但也使用适合大多数 shell 的shell
POSIX 建议的 ' ' 语法来引用不可打印的字符。$''
...
'
locale
'
像 C 字符串文字一样引用字符串,但使用适合区域设置的引号,并 在默认 C 区域设置中引用'like this'
而不是引用。"like this"
这在许多显示器上看起来更好。
stat
在 8.21 中没有使用此变量(已进行更改去年11月)。 14.04 的输出看起来像使用了QUOTING_STYLE=locale
.想必这就是当时的(隐式)默认。