ls命令产生的额外转义字符使生活变得艰难

时间:2019-04-11 14:08:23

标签: linux ls ansi-escape

我要发出一个简单的ls命令并将结果存储在文件中:

ls -ltr equ* > ffile

显示的文件名带有附加的转义符。这些在某些实用程序(如vi)下清楚地显示,而在其他实用程序(如更多)下根本不显示。示例:

-rw------- 1 me 9607LPET  72680 Apr 10 12:00 ^[[0m^[[00mequ_00020.dat^[[0m
-rw------- 1 me 9607LPET  72680 Apr 10 12:00 ^[[00mequ_00021.dat^[[0m
-rw------- 1 me 9607LPET 356110 Apr 10 12:00 ^[[00mequ_00065.dat^[[0m
-rw------- 1 me 9607LPET  60253 Apr 10 12:00 ^[[00mequ_00067.dat^[[0m
-rw------- 1 me 9607LPET  83656 Apr 10 12:00 ^[[00mequ_00068.dat^[[0m

无论如何,几乎我用来处理此文件列表的所有工具都可以检测到这些字符。它们使处理文件名变得非常困难。 我如何摆脱它们?他们首先要做什么?

编辑:该问题已被标记为另一个问题的重复,该问题还涉及在ls输出中消除颜色。但是,我坚持认为摆脱颜色是解决两个不同问题的单一解决方案。另一个问题首先是关于颜色的。这不是。用户可能会遇到我刚遇到的确切问题,但仍然不知道他应该查看ls输出中涉及颜色的其他问题。我当然是这些用户之一。因此,我坚持认为这不是另一个问题的适当重复,并且应该将此问题作为关于唯一问题的唯一问题来保留,因为实际上这就是问题所在。

1 个答案:

答案 0 :(得分:3)

这些是ANSI转义序列,用于打开和关闭颜色。尝试添加

--color=never

转到ls以关闭颜色。

通常,您应该使用--color=auto,当输出不是终端时,应该关闭颜色。