问题
我不想看到包含空格的文件名被引用。
例子
在 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 中短暂出现。