เรียกใช้คำสั่งบนหน้าต่างเทอร์มินัล (ใหม่) อื่น


32

วิธีรันคำสั่งใด ๆ ในหน้าต่างเทอร์มินัลอื่น

ตัวอย่าง: ฉันเปิดหน้าต่างเทอร์มินัลหนึ่งหน้าต่างและถ้าฉันเรียกใช้คำสั่งเช่นapropos editorนั้นก็จะเรียกใช้และเอาออกวางบนหน้าต่างนั้น แต่ผมต้องการที่จะเรียกใช้คำสั่งเดียวกันบนหน้าต่าง terminal อื่น (หน้าต่างใหม่) แทนในหน้าต่างปัจจุบันจากสถานีแรก

ชี้แจงเพิ่มเติม :
ฉันต้องการsuggest-command <command>เปิดหน้าต่างเทอร์มินัลใหม่และเรียกใช้ที่กล่าวถึง<command>ในหน้าต่าง (เพิ่งเปิด) (ซึ่งsuggest-commandเป็นตัวอย่างข้อเสนอแนะของคำสั่ง)

ทำอย่างไร


1
คลิกขวาที่ไอคอน terminal แล้วคลิกที่ "Open New Terminal"
Raphael

ขออภัยถ้าฉันฟังเหมือนลาเมน แต่นั่นคือสิ่งที่ฉันเข้าใจจากคำถามของคุณ
Raphael

gnome-terminal ใช่มั้ย
Braiam

ในขณะที่การเปิดเทอร์มินัลใหม่อาจช่วยแก้ปัญหาของคุณคุณอาจต้องการเพียงแค่ใช้ nohup สั่งงานเอาต์พุตอีกครั้งและวางโปรแกรมแก้ไขของคุณไว้ในพื้นหลัง nohup apropos editor &> /dev/null &
Panther

ฉันยังไม่เข้าใจ: ทำไมไม่เปิดเทอร์มินัลใหม่
Josef Klimuk

คำตอบ:


29

นี่อาจเป็นสิ่งที่คุณค้นหา:

gnome-terminal -e "bash -c \"!!; exec bash\""

หรือ (ไม่นาน):

gnome-terminal -x sh -c "!!; bash"

มันเปิด gnome-terminal พร้อมกับคำสั่งสุดท้ายของคุณ ( !!) และยังคงเปิดอยู่พร้อมกับเอาต์พุตคำสั่งในเชลล์แม้จะมีคำสั่งแบบโต้ตอบเช่นtopหรือless...

ในกรณีของคุณมัน:

gnome-terminal -e "bash -c \"apropos editor; exec bash\""

หรือ

gnome-terminal -x sh -c "apropos editor; bash"

2
สั้นกว่าเล็กน้อยgnome-terminal -x sh -c "!!; bash"
TuKsn

10

เริ่มอินสแตนซ์อื่นของเทอร์มินัลอะไรก็ตามที่คุณต้องการเรียกใช้:

xterm -hold -e 'apropos editor' & 

-holdหมายเหตุ เทอร์มินัลส่วนใหญ่จะออกหลังจากเรียกใช้คำสั่งที่คุณป้อน มีคำถามเกี่ยวกับเรื่องนี้ในเว็บไซต์มากกว่าหนึ่งโหล:

อีกทางเลือกหนึ่งคือใช้แอปพลิเคชั่นที่ต้องออก nanoจะเปิดอยู่เอง หากคุณเพิ่งส่งออกไปยังหน้าจอคุณสามารถไปป์ไลน์ลงในless:

xterm -e 'apropos editor | less' & 

ดังที่กล่าวไว้ในกรณีของคุณ (ตามที่อีกสองคนพูด) มันดูเหมือนง่ายกว่าที่คุณจะเปิดเทอร์มินัลอื่นและเรียกใช้คำสั่งของคุณ


ฉันสามารถใช้gnome-terminalแทนxtermวิธีการได้อย่างไร
Pandya

ฉันอยากรู้เกี่ยวกับวิธีการทำเช่นนี้กับ xfce4-terminal (xfce4-terminal เปิดกระบวนการใหม่ในขณะที่ xterm ไม่ได้ - ในกรณีของฉันฉันไม่ต้องการกระบวนการใหม่)
Shule

7

แต่ละเทอร์มินัลเป็นแม้แต่โปรแกรมที่คุณสามารถเปิดใช้เป็นโปรแกรมอื่นได้โดย&ใส่แบ็คกราวน์เป็นรายการของอาร์กิวเมนต์และอื่น ๆ

เทอร์มินัลใดที่จะใช้จะขึ้นอยู่กับความพร้อมใช้งานของระบบที่คุณใช้ก่อน (หากมีการติดตั้งหรือไม่) หลังจากคุณสมบัติพิเศษของคุณและจากรสนิยมส่วนตัวของคุณ

  konsole   --hold -e "ls" &  
  xterm      -hold -e "ls" &  
  gnome-terminal   -e "ls" & ...  

หมายเหตุ: ความแตกต่างระหว่าง-holdของxtermและของ --holdkonsole

การรับรู้แต่ละครั้งมีตัวเลือกต่าง ๆที่คุณต้องตรวจสอบด้วยความช่วยเหลือ แม้แต่ความช่วยเหลือก็สามารถเรียกใช้ในวิธีที่แตกต่างกัน คุณสามารถค้นหาสิ่งที่man konsoleไม่สามารถใช้งานได้ดังนั้นคุณต้องถามโดยตรงกับไฟล์ที่เรียกใช้งาน--helpได้

นี่คือรายการของเทอร์มินัลที่คุณสามารถค้นหาในระบบของคุณ

aterm          - AfterStep terminal with transparency support
gnome-terminal - default terminal for GNOME
guake          - A dropdown terminal for GNOME
konsole        - default terminal for KDE
Kuake          - a dropdown terminal for KDE
mrxvt          - Multi-tabbed rxvt clone
rxvt           - for the X Window System (and, in the form of a Cygwin port, 
                 for Windows) 
rxvt-unicode   - rxvt clone with unicode support
xfce4-terminal - default terminal for Xfce desktop 
                 environment with dropdown support
Terminator     - is a GPL terminal emulator. It is available on
                 Microsoft Windows, Mac OS X, Linux and other Unix X11 systems.
Terminology    - enhanced terminal supportive of multimedia 
                 and text manipulation for X11 and Linux framebuffer
tilda          - A drop down terminal
wterm          - It is a fork of rxvt, designed to be lightweight, but still
                 full of features
xterm          - default terminal for the X Window System
Yakuake        - (Yet Another Kuake), a dropdown terminal for KDE

3

คุณสามารถใช้-eตัวเลือกเพื่อ gnome-terminal ดังต่อไปนี้:

gnome-terminal -e 'sh -c propose editor'

นี่shคือเชลล์ที่ gnome-terminal เปิด โปรดทราบว่าสิ่งนี้จะออกจากเทอร์มินัลทันทีที่คำสั่งสิ้นสุดลง อ้างถึงหน้าคู่มือสำหรับ gnome-terminalสำหรับข้อมูลเพิ่มเติม


วิธีเก็บเทอร์มินัลที่เปิดใหม่ซึ่งออกหลังจากคำสั่งเสร็จสิ้น / สิ้นสุดลงแล้ว?
Pandya

3
  1. เปิดสองขั้ว
  2. การระบุแต่ละเทอร์มินัลด้วยttyคำสั่ง
  3. สมมติว่าพวกเขาระบุด้วย / dev / pts / 0 และ / dev / pts / 1;
  4. ในเทอร์มินัล pts / 0 เปลี่ยนเส้นทาง stdout ไปยัง pts / 1 ด้วยexecคำสั่ง:exec 1>/dev/pts/1
  5. ตอนนี้ทุกคำสั่งเอาต์พุต stdoutจาก pts / 0 terminal จะแสดงใน pts / 1;
  6. การเปลี่ยนเส้นทาง stdout กลับด้วย commad: exec 1>/dev/pts/0
  7. ตอนนี้ pts / 0 stdout ทำงานเหมือนก่อน

วิดีโอ YouTube:


1

หลังจาก Ubuntu 18.04 LTS คุณอาจต้องการที่จะเปลี่ยนจาก-eการ--คือgnome-terminal -eจะgnome-terminal --เพราะ-eและ-xมีทั้งที่เลิกใช้งานแล้ว


1

นี่คือ 50 เซ็นต์ของฉันกับ Terminator:

terminator -x "script.sh; bash"

วิธีนี้ใช้ได้ผลเช่นกัน แต่ฉันไม่สามารถบอกความแตกต่างได้:

terminator -e "script.sh; bash"

โปรดทราบว่าสคริปต์อาจเป็นคำสั่ง

ทดสอบบน Ubuntu 18.04 LTS

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