พิมพ์คำสั่งผลลัพธ์แบบเคียงข้างกัน


11

เป็นไปได้ที่จะพิมพ์ผลลัพธ์ของคำสั่ง 2 คำเคียงข้าง ...

บางสิ่งเช่นนี้

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สามารถทำสิ่งนี้กับไฟล์ได้ แต่ฉันไม่พบวิธีทำสิ่งนี้สำหรับคำสั่ง ...

คำตอบ:


13

คุณสามารถใช้การทดแทนกระบวนการ

pr -m <(cmd1) <(cmd2)

แม้ว่าในกรณีของคุณเนื่องจากคุณมีหนึ่งคำสั่งและหนึ่งไฟล์:

ls -l | pr -m - bla.txt

2
แทนที่จะหนึ่งสามารถใช้pr -m paste
Ramchandra Apte

1
@RamchandraApte ใช่ แต่pasteจะไม่จัดแนวไว้ในคอลัมน์อย่างที่pr -mคิด
geirha

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

3

TL; DR

ลองใช้การรวมกันของpaste/ columnแทนที่จะprได้รับผลลัพธ์ที่สอดคล้องกันมากขึ้น

  • ขึ้นอยู่กับระบบปฏิบัติการของคุณprผสมในคอลัมน์อย่างไม่ถูกต้องเมื่อความยาวของอินพุตแตกต่างกัน (Ubuntu, macOS) หรือแย่กว่านั้นจะพิมพ์แต่ละอินพุตบนหน้าแตกต่างกันโดยสิ้นเชิง (Centos 7)

  • pr ทั้ง prepends และผนวกเอาต์พุตภายนอก

รูปแบบ:

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

คำอธิบายโดยละเอียด

โซลูชันที่มีประสิทธิภาพสูงสามารถทำได้ผ่านการรวมกันของคำสั่ง pasteและcolumn

ข้อดีของการ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

ผลลัพธ์ของprรุ่นบนUbuntu :

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

เอาท์พุทของprรุ่นบนOS X / macOs :

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 ...>

ผลลัพธ์ของprรุ่นบนCentos :

(น่าแปลกที่พฤติกรรมของprUnder 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

ดีใจที่ได้ยินว่าคุณเห็นว่ามีประโยชน์ ไชโย!
Jay Taylor

มันมีประโยชน์ แต่ทำงานไม่ถูกต้องกับสี ดูคำสั่งข้างต้น คุณรู้ว่าจะทำอย่างไรกับเรื่องนี้? ขอบคุณ
phil294

ใช่สีจะเลอะเสมอ การลอกสีล่วงหน้าจากอินพุตอาจทำเคล็ดลับตัวอย่างเช่นดูแหล่งข้อมูลเหล่านี้: commandlinefu.com/commands/view/3584/…หรือunix.stackexchange.com/questions/140251/ …
Jay Taylor

นี่เป็นคำตอบที่สมบูรณ์ยิ่งขึ้นและควรเป็นคำตอบที่ยอมรับได้
Jeremy Iglehart
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.