并排打印命令结果

Wol*_*lfy 11 command-line output

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

像这样的东西

something `ls -l /a` `cat bla.txt`
Run Code Online (Sandbox Code Playgroud)

结果:

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
Run Code Online (Sandbox Code Playgroud)

我知道pr可以用文件做这样的事情,但我没有找到一种方法来为命令做到这一点......

gei*_*rha 13

您可以使用进程替换

pr -m <(cmd1) <(cmd2)
Run Code Online (Sandbox Code Playgroud)

尽管在您的情况下,因为您有一个命令和一个文件:

ls -l | pr -m - bla.txt
Run Code Online (Sandbox Code Playgroud)

  • 可以使用 `paste` 代替 `pr -m`。 (2认同)

Jay*_*lor 5

TL; 博士

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

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

  • pr 预先和附加无关输出

格式:

paste <(cmd1) <(cmd2) | column -s $'\t' -t
Run Code Online (Sandbox Code Playgroud)

详细说明

通过pastecolumn命令的组合,可以实现高度稳健的解决方案。

paste/column方法的优点pr

  • 由于未添加时间戳或页眉信息,也未添加全屏空行,因此输出更清晰

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

具体例子:

paste <(ls -1 .) <(ls -1 ..) | column -s $'\t' -t
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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

比较:pr在各种平台上

TL;DR: pr跨 Linux 版本的行为不一致。

Ubuntupr上的版本输出:

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
Run Code Online (Sandbox Code Playgroud)

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 ...>
Run Code Online (Sandbox Code Playgroud)

Centospr上的版本输出:

(令人惊讶的是prCentos 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 ...>
Run Code Online (Sandbox Code Playgroud)