สคริปต์ tmux เพื่อเรียกใช้หลายคำสั่ง


21

ฉันจะเขียนสิ่งต่อไปนี้ในสคริปต์ทุบตีได้อย่างไร

tmux # Start tmux session.
compass watch /path/to/project1/compass/ # Run the first process.
Ctrl + B, " # Split the pane.
compass watch /path/to/project2/compass/ # Run the second process.
Ctrl + B, D # Exit the session.

คำตอบ:


21
tmux \
    new-session  'compass watch /path/to/project1/compass/' \; \
    split-window 'compass watch /path/to/project2/compass/' \; \
    detach-client

new-sessionคำสั่ง (ซึ่งจะสร้างใหม่tmuxเซสชั่น) และsplit-windowคำสั่ง (ซึ่งแยกหน้าต่างปัจจุบันเป็นสองบานหน้าต่าง) ในการtmuxใช้เวลาคำสั่งเชลล์ตัวเลือกที่จะทำงาน detach-clientไม่ชัดเจนในตอนท้าย

หากคุณต้องการแบ่งแนวนอน (สองบานหน้าต่างข้างกัน) ใช้split-window -hในคำสั่งด้านบน

เมื่อส่งหลายtmuxคำสั่งไปยังที่คุณต้องการที่จะแยกพวกเขาโดยtmux ความต้องการที่จะได้รับการคุ้มครองจากเชลล์โดย quoting / หลบหนีมัน ( , หรือ) เพื่อหยุดเปลือกจากการตีความว่ามันเป็นจุดสิ้นสุดของคำสั่ง;;';'";"\;tmux

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

ใส่กลับเข้าไปเซสชั่นที่มีtmux a, tmux attachหรือtmux attach-session(เหล่านี้เทียบเท่าทั้งหมด)

tmuxเซสชั่นจะสิ้นสุดคำสั่งครั้งเดียวทั้งสองได้ดำเนินการเสร็จสิ้น


3

สิ่งนี้ไม่ได้ผลสำหรับฉัน (ฉันพยายามทำบางอย่างเช่น 'ls -la') สิ่งที่ทำคือ:

tmux new-session -d bash
tmux split-window -h bash
#sends keys to first and second terminals
tmux send -t 0:0.0 "<my-first-command>" C-m
tmux send -t 0:0.1 "<my-second-command>" C-m
tmux -2 attach-session -d

สิ่งนี้ทำให้ฉันเรียกใช้สิ่งทั่วไปที่ค่อนข้างสวยและแม้ว่ามันดูน่าเกลียด แต่มันก็ใช้งานได้ดี

ทิ้งไว้ที่นี่ในกรณีที่คนอื่นกำลังมองหาสิ่งเดียวกัน

ที่มา: https://gist.github.com/kizzx2/4739236

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