เขียนคำสั่งในเทอร์มินัลหนึ่งเห็นผลในอีกขั้วหนึ่ง


35

ฉันต้องการเรียกใช้คำสั่งfooบนเทอร์มินัลหนึ่งและส่งผลลัพธ์ไปยังเทอร์มินัลอื่น เป็นไปได้ที่จะทำเช่นนี้?


4
นอกจากนี้ให้ดูที่tmuxและหน้าจอซึ่งทั้งสองอย่างนี้อนุญาตให้คุณใช้แทนหรือทำคำสั่งในเซสชันอื่น
Kevin

คำตอบ:


46

ใช่แล้ว. รูปภาพมูลค่าหนึ่งพันคำ:

อาคารผู้โดยสารของ radu

ดังนั้นคุณต้องเปลี่ยนเส้นทางการส่งออกของคำสั่งของคุณโดยใช้ผู้ประกอบการ> /dev/pts/#คุณสามารถค้นหาการ#ใช้whoหรือwคำสั่ง หากคุณต้องการเปลี่ยนเส้นทางและข้อผิดพลาดให้ใช้:

<command> >& /dev/pts/#

ขอบคุณ แต่ถ้าเทอร์มินัลอื่นไม่มีอยู่ เราควรทำอย่างไร หรือดีกว่าที่จะบอกว่าส่งผ่านไปยังรุ่นที่ใหม่กว่าหรือไม่
Mohammad Reza Rezwani

5
คุณจะต้องใช้สคริปต์ในการทำเช่นนั้น: สคริปต์จะใช้เป็นอาร์กิวเมนต์คำสั่งของคุณจากนั้นควรเปิดใหม่gnome-terminalและตรวจสอบ tty (โดยใช้ttyคำสั่ง) ของเทอร์มินัลใหม่และส่งผลลัพธ์ไปในที่สุด
Radu Rădeanu

8

บางสิ่งเช่นนี้สำหรับคุณ$HOME/.bashrc:

ng() { gnome-terminal -x sh -c "$*; bash"; }

นี่จะรันคำสั่งและแสดงผลลัพธ์บนหน้าต่างเทอร์มินัลใหม่

ตัวอย่าง:

ng ls -l
ng echo foo

แก้ไข:เพื่อพิจารณานามแฝงจากการ$HOME/.bashrcใช้สิ่งนี้แทน:

ng() { gnome-terminal -x bash -ic "$*; bash"; }

ดังนั้นผลลัพธ์ของlsควรเป็นสี (ขอบคุณ Radu Rădeanuสำหรับคำใบ้นี้)


นี่จะรันคำสั่งโดยตรงในเทอร์มินัลใหม่
Radu Rădeanu

ใช่ แต่ข้อดีของการรันเป็นอันดับแรกในเครื่องเทอร์มินัลเก่าคืออะไร
TuKsn

ไม่มีข้อได้เปรียบ ... แต่อันที่จริงแล้วคำตอบของความคิดเห็นนี้
Radu Rădeanu

4
คุณจะเข้าใจว่าคุณจะวิ่งtype lsแล้วng type ls:)
Radu Rădeanu

1
ถ้าเขียนฟังก์ชันในหนึ่งบรรทัดใน bashrc อาจต้องใช้เครื่องหมายอัฒภาคเพื่อจบหรือคุณจะพบข้อผิดพลาด "สิ้นไฟล์ที่ไม่คาดคิด" ดังนั้นng() { gnome-terminal -x sh -c "$*; bash" ;}ควรจะดีกว่า และถ้าคุณใช้ xfce (xfce4-terminal เป็นโปรแกรมจำลองค่าเริ่มต้น): ng() { xfce4-terminal -x sh -c "$*; bash" ;}หรือคุณสามารถเรียกใช้โดยโปรแกรมจำลองค่าเริ่มต้นใด ๆng() { x-terminal-emulator -x sh -c "$*; bash";}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.