जवाबों:
केवल इस बात पर विस्तार करने के लिए कि अंसार ने क्या कहा है कि आप ग्नू स्क्रीन से बहुत परिचित नहीं हैं, एक सिंगल स्क्रीन सेशन में कई "विंडोज़" होने की संभावना है जो आपको चाहिए।
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
उम्मीद है की वो मदद करदे।
मैथ्यू
हाँ, screen
सबसे अधिक संभावना रास्ता है। Ctrl+ a, nआपको अगली विंडो पर ले जाएगा, Ctrl+ a, pपिछले वाले को। Ctrl+ a, 0.. 9आपको एक विशेष स्क्रीन पर स्विच करने की अनुमति देगा।
दूसरे जो कहते हैं, वह सही है। मैं सिर्फ tmux
इसका उल्लेख करना चाहता हूंscreen
। उनके पास बहुत समान आदेश हैं।
दोनों screen
और tmux
एक चल सत्र के लिए एक से अधिक विंडो प्रस्तुत करते हैं, और यह शायद तुम क्या चाहते है।
tmux
इसके अलावा कई सत्रों के बीच कूद (प्रत्येक अपनी स्वयं की खिड़कियां होने) प्रदान करता है। आपको इसकी आवश्यकता बहुत कम होगी।
यहाँ स्क्रीन के प्रलेखन के कुछ लिंक और tmux के बारे में क्रैश कोर्स हैं ।
इतने समय के बाद मैंने इस पूरी तरह से गायब सुविधा के आसपास काम करने के लिए एक स्क्रिप्ट बनाई। सबसे पहले इसे एक फिफो की जरूरत है:
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 करना होगा।
आप इसे एक साधारण शेल स्क्रिप्ट के साथ कर सकते हैं
for s in `screen -ls | grep Detached | grep <regex to your screen names>`; do screen -r $s; done
मान लें कि आपके पास कुछ स्क्रीन खुली हैं। यह भी मान लें कि आपने उन्हें काम और डेटा के रूप में वर्गीकृत किया है।
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;
...
लागू करते हुए 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.
अब अलग स्क्रीन का उपयोग करके अलग कर देता है 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)
अब आप अपने इच्छित डेटा (जैसे डेटा) का चयन करते हैं, फिर से उपयोग कर रहे हैं grep
।
screen -ls | grep Detached | grep data
यह केवल डेटा स्क्रीन को अलग करेगा। आप अपनी खोज को अनुकूलित करने के लिए नियमित रूप से अभिव्यक्ति के साथ grep कीवर्ड को बदल सकते हैं।
81592.data13 (Detached)
81586.data12 (Detached)
81574.data10 (Detached)
81580.data11 (Detached)
सौभाग्य से परिणाम अच्छी तरह से संरचित और टैब सीमांकित है। अब कॉलम को फ़ील्ड्स में विभाजित करें और 2 फ़ील्ड का उपयोग करके चुनें cut
।
screen -ls | grep Detached | grep data | cut -d' ' -f2
सीमांकक पैरामीटर के बाद आपको ctrl+v
सम्मिलित करने के लिए टैब को दबाना होगा । परिणाम इस तरह होने चाहिए।tab
-d
81592.data13
81586.data12
81574.data10
81580.data11
अब इसे इस ...
तरह से परिणाम पर उद्धरण और पाश का उपयोग कर एक कमांड में पैक करें। हमेशा पहले से तैयार किए गए आदेशों की जांच करें 1 वास्तव में इसे चलाने से पहले। मैंनें इस्तेमाल कियाecho screen -r
for s in `screen -ls | \
grep Detached | grep data | \
cut -d' ' -f2`; do \
echo screen -r $s; \
done
अगर सब अच्छा हो जाता है, तो इसके बिना प्रयास करें echo
।
for s in `screen -ls | \
grep Detached | grep data | \
cut -d' ' -f2`; do \
screen -r $s; \
done
देखा। आपके द्वारा अलग की गई प्रत्येक स्क्रीन आपको अगले एक पर ले जाती है।
हैप्पी स्क्रीनिंग !!
मैंने एक नोड स्क्रिप्ट लिखी थी जिसमें उपयोगकर्ता को स्क्रीन कुंजी का चयन करने के लिए एक तीर कुंजी का उपयोग करके सूची से संलग्न करने की अनुमति दी गई थी। मैंने इसे एक npm पैकेज बनाया है। आप इसे यहां देख सकते हैं: स्क्रीन-कमांड । या बस npm i -g screen-command
इसे आज़माने के लिए, यह मानते हुए कि आपके पास पहले से ही नोड.जेएस है। पैकेज स्थापित करने के बाद, sc
स्क्रीन की सूची को बुलाने के लिए कमांड का उपयोग करें ।
मुझे आशा है कि यह उस सटीक स्क्रीन पर स्विच करना है जिसे आप आसान चाहते हैं।
^a
को किसी और चीज़ से बदल दें , इसलिए बैश में कुछ भी करने के लिए एमएसीएस स्टाइल लाइन एडिटिंग का उपयोग करना हास्यास्पद नहीं है। मैं उपयोग करता हूं^t
।