并排打印命令结果


11

可以并排打印两个命令的结果...

像这样

something `ls -l /a` `cat bla.txt`

结果:

total 24                                                #while [ 1 = 1 ]; do
-rw-r--r-- 1 wolfy wolfy  194 Aug 13 08:50 c.in         #       echo "bla"
-rwxr-xr-x 1 wolfy wolfy   52 Sep 24 11:48 bla.sh       #done
-rwxr-xr-x 1 wolfy wolfy   38 Sep 24 11:48 bla1.sh      echo "bla"
-rwxr-xr-x 1 wolfy wolfy  147 Sep 24 11:54 ble.sh

我知道pr可以对文件执行类似的操作,但是我没有找到对命令执行此操作的方法...

Answers:


13

您可以使用流程替代

pr -m <(cmd1) <(cmd2)

但是根据您的情况,由于您只有一个命令和一个文件:

ls -l | pr -m - bla.txt

2
而不是pr -m一个可以使用paste
Ramchandra Apte 2013年

1
@RamchandraApte是的,尽管paste不会像对齐列那样对齐它们pr -m
盖尔哈

4

您可以这样使用screen

screen类型中Ctrl- a |用于垂直拆分Ctrl- a S用于水平拆分。

  • 跳至下一个显示区域:Ctrl-a Tab
  • 删除当前区域:Ctrl-a X
  • 删除除当前区域以外的所有区域:Ctrl-a Q

开始ls -l /a在右半部分和cat bla.txt左。


在哪里screen工作,tmux也可以。
kiri 2013年

3

TL; DR

考虑使用paste/ 的组合,column而不是pr获得更一致的结果。

  • 根据您的操作系统,pr当输入长度不同(Ubuntu,macOS)时,错误地混入列中,甚至更糟的是,将在完全不同的页面上打印每个输入(Centos 7)

  • pr 前置和附加无关的输出

格式:

paste <(cmd1) <(cmd2) | column -s $'\t' -t

详细说明

通过结合使用pastecolumn命令,可以提供高度可靠的解决方案。

paste/ column方法的优点pr

  • 由于没有时间戳或页面标题信息,也没有全屏空行,因此输出更整洁

  • 即使输入长度不同,列也始终保持独立

具体示例:

paste <(ls -1 .) <(ls -1 ..) | column -s $'\t' -t

paste/ column技术在Ubuntu 16.04上的实际输出:

jay-z@jaytaylor.com:~/go/src/github.com/jaytaylor/html2text
$ paste <(ls -1 .) <(ls -1 ..) | column -s $'\t' -t
LICENSE            archiveify
README.md          go-hostsfile
html2text.go       html2text
html2text_test.go  jaytaylor
testdata           mockery-example
shipbuilder
stoppableListener
tesseract-web

另请参阅:按列组合文本文件

进行比较:pr在各种平台上

TL; DR: pr行为在各种Linux版本中均不一致。

prUbuntu上版本的输出:

jay-z@jaytaylor.com:~/go/src/github.com/jaytaylor/html2text
$ pr -m <(ls -1 .) <(ls -1 ..)


2017-05-25 15:50                    /dev/fd/62                    Page 1


LICENSE                 archiveify
README.md               go-hostsfile
html2text.go                html2text
html2text_test.go           jaytaylor
testdata                mockery-example
                    shipbuilder
                    stoppableListener
                    tesseract-web

OS X / macOspr上的版本输出:

jay-z@jaytaylor.com:~/go/src/github.com/jaytaylor/html2text
$ pr -m <(ls -1 .) <(ls -1 ..)


May 25 08:55 2017  Page 1


LICENSE                 archiveify
README.md               go-hostsfile
html2text.go                html2text
html2text_test.go           jaytaylor
testdata                mockery-example
                    shipbuilder
                    stoppableListener
                    tesseract-web

<... remainder of screen filled with blank lines ...>

Centospr上的version的输出:

(令人惊讶的是,pr在Centos 7下的行为与所测试的所有其他平台的行为不同)

jay-z@jaytaylor.com:~/go/src/github.com/jaytaylor/html2text
$ pr <(ls -1 .) <(ls -1 ..)


2017-05-25 15:59                    /dev/fd/63                    Page 1


LICENSE
README.md
html2text.go
html2text_test.go
testdata

<... remainder of screen filled with blank lines ...>

2017-05-25 16:21                    /dev/fd/62                    Page 1


archiveify
go-hostsfile
html2text
jaytaylor
mockery-example
shipbuilder
stoppableListener
tesseract-web

<... remainder of screen filled with blank lines ...>

很好 比接受的答案更好。但是,彩色输出破坏了一切。paste <(screenfetch) <(echo hi |cowsay -W 20) |column -s $'\t' -t
phil294

很高兴听到您发现它很有帮助。干杯!
杰伊·泰勒

这很有用,但不能正确处理颜色。参见上面的命令。你知道该怎么办吗?谢谢
phil294

是的,颜色总会弄乱它。:从输入预先剥离颜色可以做的伎俩,例如参见这些资源commandlinefu.com/commands/view/3584/...unix.stackexchange.com/questions/140251/...
杰伊·泰勒

这是一个更完整的答案,应该是公认的答案。
杰里米·伊格哈特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.