आभासी सत्र (स्क्रीन?) के बीच जल्दी से स्विच करना


19

मैं एक पोटीन विंडो में कुछ वर्चुअल सेशन करना चाहता हूं और उनके बीच जल्दी से बदलाव करना चाहता हूं। ऐसा करने का सबसे अच्छा तरीका क्या है? screen? मुझे पता है कि मैं ctrl+adएक अलग सत्र के लिए अलग हो सकता हूं और फिर से लिख सकता हूं , लेकिन यह बहुत टाइपिंग जैसा लगता है।

जवाबों:


22

केवल इस बात पर विस्तार करने के लिए कि अंसार ने क्या कहा है कि आप ग्नू स्क्रीन से बहुत परिचित नहीं हैं, एक सिंगल स्क्रीन सेशन में कई "विंडोज़" होने की संभावना है जो आपको चाहिए।

ctrl+ a, cआपके सक्रिय स्क्रीन सत्र में एक नई "विंडो" बनाएगा। आप के साथ कई विंडो के बीच स्विच कर सकते हैं (जैसा कि Ansgar इंगित) ctrl+ a, nअगले विंडो के लिए, और ctrl+a , pपिछली विंडो के लिए।

ctrl+ a," आपको अपनी सभी खुली खिड़कियों की सूची देगा।

इन आसान शॉर्टकट का उपयोग करने से आप विभिन्न टर्मिनलों के बीच बहुत जल्दी और आसानी से स्विच कर सकते हैं, कई स्क्रीन सत्रों का उपयोग किए बिना अपने लक्ष्य को पूरा कर सकते हैं।

यदि आप निम्न पंक्ति को ~ / .स्क्रीन पर जोड़ते हैं, तो यह हमेशा आपकी खुली हुई खिड़कियों को प्रदर्शित करेगी और कौन सी चुनी जाती है, इसलिए आपको यह याद रखने की आवश्यकता नहीं है कि आप किस विंडो को याद रख रहे हैं।

hardstatus alwayslastline '%{= kg}[ %{G}%H %{g}][%= %{= kB}%?%-Lw%?%{+b r}(%{G}%n*%f %t%?(%u)%?%{r})%{-b B}%?%+Lw%?%?%= %{g}%]'

यह एक हार्डस्टैटस लाइन है जिसे मैं उपयोग करना पसंद करता हूं, लेकिन यह पूरी तरह से अनुकूलन योग्य है (मैन पेज देखें या "ग्नू स्क्रीन हार्डस्टैटस" के लिए Google खोजें)।

अन्य चीजों का एक टन है जो आप इसके साथ कर सकते हैं (उदाहरण के लिए विभिन्न खुली खिड़कियों का नामकरण), इसलिए यह कुछ ट्यूटोरियल पढ़ने के लायक है।

यहाँ एक जोड़ी है जिसे मैंने त्वरित खोज के साथ पाया:

http://news.softpedia.com/news/GNU-Screen-Tutorial-44274.shtml

http://www.ibm.com/developerworks/aix/library/au-gnu_screen/

और निश्चित रूप से सभी का सबसे उपयोगी:

# From your terminal:
$ man screen

उम्मीद है की वो मदद करदे।

मैथ्यू


2

हाँ, screenसबसे अधिक संभावना रास्ता है। Ctrl+ a, nआपको अगली विंडो पर ले जाएगा, Ctrl+ a, pपिछले वाले को। Ctrl+ a, 0.. 9आपको एक विशेष स्क्रीन पर स्विच करने की अनुमति देगा।


आप बहुत तेज कीबाइंडिंग सेट कर सकते हैं, जैसे कि प्राइम के लिए F11, अगली विंडो के लिए F12। और स्क्रीन एस्केप कैरेक्टर ^aको किसी और चीज़ से बदल दें , इसलिए बैश में कुछ भी करने के लिए एमएसीएस स्टाइल लाइन एडिटिंग का उपयोग करना हास्यास्पद नहीं है। मैं उपयोग करता हूं ^t
पीटर कॉर्डेस

1

दूसरे जो कहते हैं, वह सही है। मैं सिर्फ tmuxइसका उल्लेख करना चाहता हूंscreen । उनके पास बहुत समान आदेश हैं।

दोनों screenऔर tmuxएक चल सत्र के लिए एक से अधिक विंडो प्रस्तुत करते हैं, और यह शायद तुम क्या चाहते है। tmuxइसके अलावा कई सत्रों के बीच कूद (प्रत्येक अपनी स्वयं की खिड़कियां होने) प्रदान करता है। आपको इसकी आवश्यकता बहुत कम होगी।

यहाँ स्क्रीन के प्रलेखन के कुछ लिंक और tmux के बारे में क्रैश कोर्स हैं ।


1

इतने समय के बाद मैंने इस पूरी तरह से गायब सुविधा के आसपास काम करने के लिए एक स्क्रिप्ट बनाई। सबसे पहले इसे एक फिफो की जरूरत है:

mkdir ~/.screen
mkfifo ~/.screen/pipe

यह नामित पाइप बाधित सत्र और "मुख्य-बिना-स्क्रीन" सत्र के बीच संचार के लिए उपयोगी है।

फ़ाइल sc ($ PATH में):

#!/bin/bash
CONFIGFILE=~/.screen/"$1""rc"

if [ ! -r $CONFIGFILE ] ; then
   echo "Configurazione per $1 Assente" >&2
   exit 1
fi

exec 3<> ~/.screen/pipe

if [ "$STY" != "" ] ; then
   screen -d "$STY"
   echo "$1" >&3
else
   screen -r "$1" 2>/dev/null || screen -S "$1" -c $CONFIGFILE
   while true ; do
      read line <&3
      screen -r "$line" 2>/dev/null || screen -S "$line" -c ~/.screen/"$line""rc"
   done
fi

एक "CONFIGFILE" का एक उदाहरण है: ~ / .screen / Monitorrc

layout new Monitor

screen -t "bash" bash --login
split -v
focus next
split 
focus bottom
screen -t "cv" sh -c "watch /usr/bin/cv -w"
split
focus bottom
screen -t "sys.log" sh -c "tail -F /var/log/sys.log"
focus up
focus up
resize 25
screen -t "top" sh -c "top"
focus left

परिणाम है: जब आप स्क्रीन प्रकार लॉन्च करना चाहते हैं:

sc Monitor

या कोई अन्य सत्र जिसे आप आविष्कार करना चाहते हैं, मैं विभिन्न सामानों के लिए सत्र कार्य का उपयोग करता हूं

Ex: ~ / .स्क्रीन / वर्क आर्क

layout new Work  
screen -t "bash" bash --login  

जब हम टाइप करते हैं, तो अब हम सेशन मॉनिटर में हैं:

sc Work

सत्र मॉनिटर खुद को अलग करता है और नामित कार्य को "कार्य" लिखता है। नतीजतन पहली sc स्क्रिप्ट आगे बढ़ती है और सत्र "वर्क" को संलग्न करती है।
सत्र मॉनीटर क्लोज से लाया गया sc।

जब हम सभी सत्रों को अलग कर लेते हैं तो हम एक अनंत लूप में होते हैं इसलिए हमें बाहर निकलने के लिए Ctrl-c करना होगा।


1

आप इसे एक साधारण शेल स्क्रिप्ट के साथ कर सकते हैं

    for s in `screen -ls | grep Detached | grep <regex to your screen names>`; do screen -r $s; done 
  1. मान लें कि आपके पास कुछ स्क्रीन खुली हैं। यह भी मान लें कि आपने उन्हें काम और डेटा के रूप में वर्गीकृत किया है।

    for i in {10..13}; do screen -S `printf data%02d $i`; done;
    for i in {0..5}; do screen -S `printf work%02d $i`; done;
    ...
    
  2. लागू करते हुए screen -ls, आपके पास अपनी स्क्रीन इस तरह होनी चाहिए

    There are screens on:
        81592.data13    (Detached)
        81539.work04    (Detached)
        81527.work02    (Detached)
        81586.data12    (Detached)
        81574.data10    (Detached)
        81533.work03    (Detached)
        81488.work00    (Detached)
        81607.ttys014.Mo    (Attached)
        81545.work05    (Detached)
        81580.data11    (Detached)
        81521.work01    (Detached)
        81515.work00    (Detached)
    12 Sockets in /var/folders/qs/cvlbhpr54fnb96vtx01bs9k00000gn/T/.screen.
    
  3. अब अलग स्क्रीन का उपयोग करके अलग कर देता है grep

    screen -ls | grep Detached
    

आपको कुछ इस तरह से मिलना चाहिए

        81592.data13    (Detached)
        81539.work04    (Detached)
        81527.work02    (Detached)
        81586.data12    (Detached)
        81574.data10    (Detached)
        81533.work03    (Detached)
        81488.work00    (Detached)
        81545.work05    (Detached)
        81580.data11    (Detached)
        81521.work01    (Detached)
        81515.work00    (Detached)
  1. अब आप अपने इच्छित डेटा (जैसे डेटा) का चयन करते हैं, फिर से उपयोग कर रहे हैं grep

    screen -ls | grep Detached | grep data
    

यह केवल डेटा स्क्रीन को अलग करेगा। आप अपनी खोज को अनुकूलित करने के लिए नियमित रूप से अभिव्यक्ति के साथ grep कीवर्ड को बदल सकते हैं।

        81592.data13    (Detached)
        81586.data12    (Detached)
        81574.data10    (Detached)
        81580.data11    (Detached)
  1. सौभाग्य से परिणाम अच्छी तरह से संरचित और टैब सीमांकित है। अब कॉलम को फ़ील्ड्स में विभाजित करें और 2 फ़ील्ड का उपयोग करके चुनें cut

    screen -ls | grep Detached | grep data | cut -d'       ' -f2
    

सीमांकक पैरामीटर के बाद आपको ctrl+vसम्मिलित करने के लिए टैब को दबाना होगा । परिणाम इस तरह होने चाहिए।tab-d

81592.data13
81586.data12
81574.data10
81580.data11
  1. अब इसे इस ...तरह से परिणाम पर उद्धरण और पाश का उपयोग कर एक कमांड में पैक करें। हमेशा पहले से तैयार किए गए आदेशों की जांच करें 1 वास्तव में इसे चलाने से पहले। मैंनें इस्तेमाल कियाecho screen -r

    for s in `screen -ls | \
    grep Detached | grep data | \
    cut -d'     ' -f2`; do \
        echo screen -r $s; \
    done
    
  2. अगर सब अच्छा हो जाता है, तो इसके बिना प्रयास करें echo

    for s in `screen -ls | \
    grep Detached | grep data | \
    cut -d'     ' -f2`; do \
        screen -r $s; \
    done
    
  3. देखा। आपके द्वारा अलग की गई प्रत्येक स्क्रीन आपको अगले एक पर ले जाती है।

हैप्पी स्क्रीनिंग !!


यह वास्तव में एक अच्छा जवाब है और यह इस साइट की समग्र गुणवत्ता को बढ़ाता है।
123456789123456789123456789 1

1

मैंने एक नोड स्क्रिप्ट लिखी थी जिसमें उपयोगकर्ता को स्क्रीन कुंजी का चयन करने के लिए एक तीर कुंजी का उपयोग करके सूची से संलग्न करने की अनुमति दी गई थी। मैंने इसे एक npm पैकेज बनाया है। आप इसे यहां देख सकते हैं: स्क्रीन-कमांड । या बस npm i -g screen-commandइसे आज़माने के लिए, यह मानते हुए कि आपके पास पहले से ही नोड.जेएस है। पैकेज स्थापित करने के बाद, scस्क्रीन की सूची को बुलाने के लिए कमांड का उपयोग करें ।

मुझे आशा है कि यह उस सटीक स्क्रीन पर स्विच करना है जिसे आप आसान चाहते हैं।

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