这个问题询问关于在某一列换行的问题,人们建议使用fold
orfmt
但据我所知,这些只是计算字符而不允许非打印字符。例如:
fold -w 20 -s <<<`seq 1 25`
Run Code Online (Sandbox Code Playgroud)
正如人们所料,产生:
1 2 3 4 5 6 7 8 9
10 11 12 13 14 15
16 17 18 19 20 21
22 23 24 25
Run Code Online (Sandbox Code Playgroud)
但:
fold -w 20 -s <<<^[[32m`seq 1 25`^[[m
Run Code Online (Sandbox Code Playgroud)
(这里^[
是转义字符)直观应该产生绿色的文字同样的事情,而是产生:
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20
21 22 23 24 25
Run Code Online (Sandbox Code Playgroud)
在绿色文本中。
我看不到任何说明非打印字符的开关,并且标记非打印字符 …
当在基于 rpm 的 Linux 发行版(RHEL/Red Hat、Fedora、CentOS 等)上使用时,dnf
该yum
实用程序将自动换行以使其更适合用户阅读。这是有问题的,因为它使得通过管道处理数据变得非常烦人。
例如:
$ dnf search jenkins-ssh-credentials-plugin-javadoc
Last metadata expiration check: 6 days, 15:30:08 ago on Thu Sep 1 21:09:10 2016.
============= N/S Matched: jenkins-ssh-credentials-plugin-javadoc =============
jenkins-ssh-credentials-plugin-javadoc.noarch : Javadoc for jenkins-ssh-credentials-plugin
$ dnf search jenkins-ssh-credentials-plugin-javadoc | grep ssh
====== N/S Matched: jenkins-ssh-credentials-plugin-javadoc =======
jenkins-ssh-credentials-plugin-javadoc.noarch : Javadoc for
: jenkins-ssh-credentials-plugin
Run Code Online (Sandbox Code Playgroud)
您可以看到,一旦 DNF 的输出通过,grep
它就会决定以与通常向用户显示时完全不同的方式包装数据。
关于此行为已提交多个问题(#584525、#986740),并且这些问题始终被关闭,CLOSED NOTABUG
因为“Yum 是一个基于交互式文本的 ui,不适合也不适合管道。”。红帽开发人员的解决方案是“使用不同的工具来完成这项工作”。
必须这样做似乎是不合理的,特别是当提供的方法(repoquery
例如安装)甚至不存在于dnf
实用程序中并且需要安装更多的软件包才能解析此数据的输出时。 …
我可以通过运行获得我想要的效果,less -S
但在我看来,在打开文件后没有自动换行就无法呈现输入似乎很可疑。
有没有办法
less /tmp/longtext
Run Code Online (Sandbox Code Playgroud)
然后在你让它禁用自动换行而不退出和重新启动之后。