Ответы:
Просто для того, чтобы расширить сказанное Ансгаром в случае, если вы не очень хорошо знакомы с экраном gnu, наличие нескольких «окон» в одном сеансе экрана, вероятно, достигнет того, что вам нужно.
ctrl+ a, cсоздаст новое «окно» в вашем активном сеансе экрана. Вы можете переключаться между несколькими окнами (как указано Ansgar) с ctrl+ a, nв следующем окне, и ctrl+ a, pв предыдущем окне.
ctrl+ a, "даст вам список всех ваших открытых окон.
Использование этих быстрых клавиш позволит вам быстро и легко переключаться между различными терминалами, выполняя свою задачу без использования нескольких сеансов экрана.
Если добавить следующую строку в ~ / .screenrc он всегда будет отображать открытые окна и который один выбран, так что вам не нужно отслеживать, какие окна вы на помня.
hardstatus alwayslastline '%{= kg}[ %{G}%H %{g}][%= %{= kB}%?%-Lw%?%{+b r}(%{G}%n*%f %t%?(%u)%?%{r})%{-b B}%?%+Lw%?%?%= %{g}%]'
Это строка hardstatus, которую я люблю использовать, но она полностью настраиваема (см. Справочную страницу или поиск в Google для "gnu screen hardstatus").
Есть множество других вещей, которые вы можете сделать с ним (например, назвать разные открытые окна), поэтому стоит прочитать некоторые учебники.
Вот пара, которую я нашел с помощью быстрого поиска:
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
дополнительно предлагает прыжки между несколькими сессиями (каждая из которых имеет свои собственные окна). Тебе это понадобится очень редко.
Вот несколько ссылок на документацию по screen и краткий курс о tmux .
Через столько времени я создал скрипт, чтобы обойти эту совершенно отсутствующую функцию. Прежде всего, это нужно FIFO:
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
или другой сеанс, который вы хотели бы изобрести, я использую Session Work для разных вещей
Пример: ~ / .screen / Workrc
layout new Work
screen -t "bash" bash --login
Теперь мы находимся в Session Monitor, когда набираем:
sc Work
Монитор сеанса отсоединяется и пишет «Работа» в именованную трубу. Следовательно, первый скрипт sc идет вперед и присоединяет сессию «Работа».
Sc вызывается из сеанса Monitor close.
Когда мы отсоединяем все сеансы, мы находимся в бесконечном цикле, поэтому мы должны выполнить 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
попробуйте, если у вас уже установлен node.js. После установки пакета используйте команду sc
для вызова списка экранов.
Я надеюсь, что это облегчает переход на нужный экран.
^a
на что-то другое, чтобы не было смешно раздражать использование строкового редактирования в стиле emacs в bash, что угодно еще. Я использую^t
.