ฉันเหนื่อย
tmux -c "shell command" split-window
แต่ดูเหมือนจะไม่ทำงาน
ใช้tmux split-window
หนึ่งสามารถแยกหน้าต่างใหม่
อัปเดต :
ใช้tmux split-window 'exec ping g.cn'
สามารถเรียกใช้คำสั่ง ping แต่เมื่อหยุดหน้าต่างใหม่จะถูกปิด
ฉันเหนื่อย
tmux -c "shell command" split-window
แต่ดูเหมือนจะไม่ทำงาน
ใช้tmux split-window
หนึ่งสามารถแยกหน้าต่างใหม่
อัปเดต :
ใช้tmux split-window 'exec ping g.cn'
สามารถเรียกใช้คำสั่ง ping แต่เมื่อหยุดหน้าต่างใหม่จะถูกปิด
คำตอบ:
ใช้:
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ในบานหน้าต่างจากนั้นจะปิดโดยอัตโนมัติ
remain-on-exit
cmd ; read
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
สิ่งนี้ใช้:
--rcfile
: วิธีการเรียกใช้ bash, เรียกใช้คำสั่งภายในเชลล์ใหม่, จากนั้นให้การควบคุมกลับไปยังผู้ใช้? | กองล้นมากเกินไปTMUX_PANE
: วิธีการแยกหน้าต่างที่รันคำสั่ง "tmux split-window" แทนที่จะเป็นหน้าต่างปัจจุบันได้อย่างไร?อีกตัวแปรที่น่าสนใจคือ:
tmux-split-cmd-uniq() (
if [ "$(tmux list-panes | wc -l | cut -d' ' -f1)" -ne 1 ]; then
tmux kill-pane -t 1
fi
tms "$@"
)
ซึ่งฆ่าการแบ่งก่อนหน้านี้หากมีอยู่แล้วและช่วยในการแยกพิเศษหนึ่งครั้งตลอดเวลา
man tmux | less -p remain-on-exit
...