कैसे एक नई विंडो को विभाजित करें और tmux का उपयोग करके इस नई विंडो में एक कमांड चलाएं?


28

मैंने कोशिश की है

tmux -c "shell command" split-window

लेकिन यह काम नहीं करता है।

का उपयोग करके tmux split-window, एक नई विंडो को विभाजित कर सकता है।

अद्यतन :

का उपयोग करके tmux split-window 'exec ping g.cn'पिंग कमांड चला सकते हैं, लेकिन जब बंद हो जाएगा तो नई विंडो बंद हो जाएगी।


4
man tmux | less -p remain-on-exit...
जसोनव्रीयन

जवाबों:


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सेक्शन, "विंडोज और पैनस")। ध्यान दें कि आदेश महत्वपूर्ण है - कमांड को उन पूर्ववर्ती विकल्पों में से किसी के बाद आना होगा जो दिखाई देते हैं, और इसके लिए एक ही तर्क होना चाहिए, इसलिए आपको इसे रिक्त स्थान होने पर उद्धृत करने की आवश्यकता है।


इस तरह के आदेश के लिए 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फलक में दबाते हैं , और तब यह स्वचालित रूप से बंद हो जाएगा।


धन्यवाद माइकल होमर :-)। मैंने इसे अभी / अभी पाया है। लेकिन नई खिड़की को बंद से कैसे रखें?
atupal

@atupal: संपादन देखें - या तो सेट करें remain-on-exitया उपयोग करें cmd ; read
माइकल होमर

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 "$@"
)

जो पिछले विभाजन को मारता है अगर यह पहले से मौजूद है, और हर समय केवल एक अतिरिक्त विभाजन रखने में मदद करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.