通过远程 ssh 命令获取输出时,如何让“yum list”输出保持在一行?

Mit*_*tch 10 yum ssh terminal pipe

当我通过 SSH 连接到一台机器ssh machine并运行yum list它时,它会输出按预期安装的所有内容,重要的是每个项目都在一行上,如下所示:

xz-devel.i386                                                                                                        4.999.9-0.3.beta.20091007git.el5                                                                  base            
xz-devel.x86_64                                                                                                      4.999.9-0.3.beta.20091007git.el5                                                                  base            
xz-libs.i386                                                                                                         4.999.9-0.3.beta.20091007git.el5                                                                  base            
xz-lzma-compat.x86_64                                                                                                4.999.9-0.3.beta.20091007git.el5                                                                  base            
Run Code Online (Sandbox Code Playgroud)

但是在远程执行ssh machine 'yum list'或什至通过管道将其传输到 grep 而在服务器上时yum list | grep xz -C 3,输出的行被“截断”并变得更短,如下所示:

xz-devel.i386                              4.999.9-0.3.beta.20091007git.el5
                                                                       base     
xz-devel.x86_64                            4.999.9-0.3.beta.20091007git.el5
                                                                       base     
xz-libs.i386                               4.999.9-0.3.beta.20091007git.el5
                                                                       base     
xz-lzma-compat.x86_64                      4.999.9-0.3.beta.20091007git.el5
                                                                       base     
Run Code Online (Sandbox Code Playgroud)

我怎样才能使线条的大小不像这样缩小?我的最终愿望是将其通过管道传输到tee,然后通过 ansible 对所有主机的输出文件进行一些处理。

这似乎是由于某种“虚拟终端”作为 SSH/管道的一部分而发生的,因为如果我缩小我的终端大小,在运行时断线,我可以获得相同的行为yum list。因此,我假设管道的添加以某种方式告诉yum list终端的宽度仅为 X 列

Mit*_*tch 6

根据@thrig 在评论中提供的这个答案,我能够通过执行它来正确输出

yum list installed | xargs -n3 | column -t 
Run Code Online (Sandbox Code Playgroud)

  • 稍作修改:`yum 列表已安装 | 尾-n +5 | xargs -n3 | xargs -n3 | 列-t | less` 清除未注册的 redhat 系统中的污垢。 (2认同)