วิธีแบ่งหน้าต่างใหม่และรันคำสั่งในหน้าต่างใหม่นี้โดยใช้ tmux?


28

ฉันเหนื่อย

tmux -c "shell command" split-window

แต่ดูเหมือนจะไม่ทำงาน

ใช้tmux split-windowหนึ่งสามารถแยกหน้าต่างใหม่

อัปเดต :

ใช้tmux split-window 'exec ping g.cn'สามารถเรียกใช้คำสั่ง ping แต่เมื่อหยุดหน้าต่างใหม่จะถูกปิด


4
man tmux | less -p remain-on-exit...
jasonwryan

คำตอบ:


38

ใช้:

tmux split-window "shell command"

split-windowคำสั่งมีไวยากรณ์ต่อไปนี้:

 split-window [-dhvP] [-c start-directory] [-l size | -p percentage] [-t
         target-pane] [shell-command] [-F format]

(จากman tmuxส่วน "Windows และ Panes") โปรดทราบว่าคำสั่งซื้อนั้นมีความสำคัญ - คำสั่งจะต้องดำเนินการตามตัวเลือกก่อนหน้าใด ๆ ที่ปรากฏขึ้นและจะต้องเป็นอาร์กิวเมนต์เดี่ยวดังนั้นคุณจำเป็นต้องเสนอราคาหากมีช่องว่าง


สำหรับคำสั่งเช่นping -cนั้นสิ้นสุดอย่างรวดเร็วคุณสามารถตั้งค่าremain-on-exitตัวเลือกแรก:

tmux set-option remain-on-exit on
tmux split-window 'ping -c 3 127.0.0.1'

บานหน้าต่างจะยังคงเปิดอยู่หลังจากpingเสร็จสิ้น แต่จะถูกทำเครื่องหมาย "ตาย" จนกว่าคุณจะปิดมันด้วยตนเอง

หากคุณไม่ต้องการเปลี่ยนตัวเลือกโดยรวมมีวิธีอื่น คำสั่งรันด้วยsh -cและคุณสามารถใช้ประโยชน์จากมันเพื่อทำให้หน้าต่างยังคงอยู่ในตอนท้าย:

tmux split-window 'ping -c 3 127.0.0.1 ; read'

ที่นี่คุณใช้readคำสั่งเชลล์เพื่อรอการขึ้นบรรทัดใหม่ของผู้ใช้หลังจากคำสั่งหลักเสร็จสิ้น ในกรณีนี้เอาต์พุตคำสั่งจะยังคงอยู่จนกว่าคุณจะกดEnterในบานหน้าต่างจากนั้นจะปิดโดยอัตโนมัติ


ขอบคุณ Michawl Homer :-) ฉันพบว่ามันเหมือนกันตอนนี้ / แต่จะปิดหน้าต่างใหม่ได้อย่างไร
atupal

@atupal: ดูแก้ไข - ทั้งชุดหรือการใช้งานremain-on-exit cmd ; read
Michael Homer

2

bash --rcfile

เทคนิคนี้เปิดเชลล์ใหม่รันคำสั่งและปล่อยให้คุณอยู่ที่นั่นหลังจากคำสั่งเสร็จสิ้น:

tmux-split-cmd() ( tmux split-window -dh -t $TMUX_PANE "bash --rcfile <(echo '. ~/.bashrc;$*')" )
tmux-split-cmd 'cd; pwd; ping google.com'

หรือถ้าคำสั่งไม่มีอักขระเทอร์มินัลพิเศษเช่น;เพียง

tmux-split-cmd ping google.com

สิ่งนี้ใช้:

อีกตัวแปรที่น่าสนใจคือ:

tmux-split-cmd-uniq() (
  if [ "$(tmux list-panes | wc -l | cut -d' ' -f1)" -ne 1 ]; then
    tmux kill-pane -t 1
  fi
  tms "$@"
)

ซึ่งฆ่าการแบ่งก่อนหน้านี้หากมีอยู่แล้วและช่วยในการแยกพิเศษหนึ่งครั้งตลอดเวลา

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