OSX 上 ls 输出中带空格的引用文件名

OSX 上 ls 输出中带空格的引用文件名

问题

我不想看到包含空格的文件名被引用。

例子

在 OSX 上,我在运行时看到以下内容ls

> ls -l
total 0
drwxr-xr-x 2 mafro staff 68 Mar 16 09:02 'dir with spaces'
drwxr-xr-x 2 mafro staff 68 Mar 16 09:02 dir_with_spaces

在我的 Debian 盒子上,它看起来像这样:

> ls -l
total 8
drwxr-xr-x 2 mafro mafro 4096 Mar 16 09:02 dir with spaces
drwxr-xr-x 2 mafro mafro 4096 Mar 16 09:02 dir_with_spaces

我的 shellzsh带有prezto少量我自己的定制。我(应该)在两个盒子上有完全相同的点文件

这里是ls.两个系统上都是一样的:

> which ls
ls: aliased to ls --group-directories-first --color=auto

答案1

这是 Coreutils 的一个新功能ls

从信息文档:

'-N'
'--literal'
'--quoting-style=literal'

不要引用文件名。但是,如果输出是终端并且未指定“--show-control-chars”选项,则使用“ls”时,非图形字符仍会打印为问号。

答案2

要禁用此功能,请添加export QUOTING_STYLE=literal到您的~/.bashrc或,如果您使用最新的 GNU coreutils 和不支持的 shell export var=value,请使用:

QUOTING_STYLE=literal
export QUOTING_STYLE

IMO,最近添加的引用样式是一个很好的功能,但它们不应该改变默认行为,因为它打破了太多现有的脚本和命令行习惯 - 特别是对于那些做正确的事情并正确引用变量的人来说。

sid顺便说一句,Debian 恢复了 coreutils 8.25-2 中的行为,因此它仅在 8.25-1 中短暂出现。

相关内容