升级到 18.04 后带有空格的文件名显示为“文件名”

vid*_*rlo 24 command-line ls 18.04

升级到 18.04 后,从 16.04 开始,所有带空格的文件名都显示为'file name'. 以前它只是file name. 没有空格的文件名正常显示:

$ ls
 bar  'foo bar'
Run Code Online (Sandbox Code Playgroud)

虽然它不会以任何方式影响功能,但我发现这在视觉上很混乱。

bash用作外壳。

如何删除''带空格的文件名周围的显示?

Win*_*nix 33

这种ls行为变化是从 2016 年开始的,但最终进入了 Ubuntu。

要恢复旧的行为,请使用ls -N.

您可以选择使用环境变量:

QUOTING_STYLE=literal ls
Run Code Online (Sandbox Code Playgroud)

将其设为别名,或export QUOTING_STYLE=literal在您的设置中设置~/.bashrc以实现旧行为。

您可以阅读上面的链接以获取更多详细信息,包括这一切发生的时间、地点、原因和方式的历史。在ls 更改作者下面有很多评论,他证明了新行为的合理性:

关于变化的几点说明。

  • 它是在 coreutils v8.25 中引入的,并且在 v8.26 中改进了对齐
  • 它仅在输出到终端时发生,因此不会破坏脚本
  • 它消除了用户对包含空格的文件的输出的歧义
  • 它清理输出,因此复制和粘贴是安全的
  • 输出现在对于复制并粘贴回 shell始终有效
  • 用户可以通过添加别名-N来恢复旧格式ls


Rav*_*ina 12

ls被引用输出,运行:

ls -N
Run Code Online (Sandbox Code Playgroud)

无需任何引用即可获得输出。

man ls
Run Code Online (Sandbox Code Playgroud)

-N, --文字

打印条目名称而不引用


如果需要,请为其别名:

echo "alias ls='ls -N'" >> .bashrc
Run Code Online (Sandbox Code Playgroud)