Как открыть окна вкладок в Gnu-screen и выполнять команды внутри каждого


30

когда начинается сессия с именем, как это screen -S name1

я хочу, чтобы открыть окна вкладок в этом сеансе экрана, как при открытии вкладок в gnome-терминал, как это

gnome-terminal --tab -e "some commands"

так как это сделать?


ОБА, я хочу знать, как открыть вкладки симлар для гнома, и хочу выполнить некоторую команду даже после того, как открою вкладку при запуске
— Ахмед Заин Эль Дейн

Таким образом, метод, который я описал ниже, показывает вкладки, которые вы ищете тогда? Просто нужен способ запустить в них команду?
— SLM

но на самом деле я начинающий, и я не понимаю, что именно вы хотите, чтобы я делал, я думал, что на экране есть синтаксис для открытия вкладок, но кажется, что вы добавите несколько строк в какой-то файл
— Ахмед Зейн Эль Дейн

Хорошо, я понимаю, что вы хотите, чтобы я скопировал это и прошлое в этом файле у себя дома, но я спрашиваю о том, что screen -t name дает заголовок экрана, как я знаю, а также я хочу открыть эти вкладки в именованном сеансе например, screen -S name1 --tab -e "some commands"я надеюсь, вы понимаете, о чем я спрашиваю?
— Ахмед Заин Эль Дейн

мммм это предопределенные вкладки с определенным числом, это не то, что я спрашиваю, сэр :) я не знаю, сколько вкладок мне нужно во время выполнения, что я хочу, это что-то похожее на команду терминала gnome, gnome-terminal --tab -e "commands " --tab -e " commands это откроет одно окно терминал с двумя вкладками, например, я имею в виду :) спасибо
— Ахмед Зейн Эль Дейн

Ответы:


73

1. Вкладки на экране

Вы ищете это, чтобы добавить к вашему файлу .screenrc:

screen -t tab1
screen -t tab2

Вот хороший базовый файл .screenrc, с которого можно начать работу с строкой состояния и т. Д. ПРИМЕЧАНИЕ. Обычно он находится в вашем домашнем каталоге /home/<username>/.screenrc.

screen -t validate #rtorrent
screen -t compile #irssi
screen -t bash3
screen -t bash4
screen -t bash5
altscreen on
term screen-256color
bind ',' prev
bind '.' next
#
#change the hardstatus settings to give an window list at the bottom of the
#screen, with the time and date and with the current window highlighted
hardstatus alwayslastline
#hardstatus string '%{= kG}%-Lw%{= kW}%50> %n%f* %t%{= kG}%+Lw%< %{= kG}%-=%c:%s%{-}'
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %m-%d %{W}%c %{g}]'

Скриншот

сс экранной сессии

2. Вкладки на экране (команды запускаются внутри)

Пример .screenrcниже создаст 2 вкладки и запустит 3 команды эха в каждой.

screen -t tab1                                                                                     
select 0                                                                                           
stuff "echo 'tab1 cmd1'; echo 'tab1 cmd2'; echo 'tab1 cmd3'^M"                                     
screen -t tab2                                                                                     
select 1                                                                                           
stuff "echo 'tab2 cmd1'; echo 'tab2 cmd2'; echo 'tab2 cmd3'^M"                                     

altscreen on                                                                                       
term screen-256color                                                                               
bind ',' prev                                                                                      
bind '.' next                                                                                      
#                                                                                                  
#change the hardstatus settings to give an window list at the bottom of the                        
#screen, with the time and date and with the current window highlighted                            
hardstatus alwayslastline                                                                          
#hardstatus string '%{= kG}%-Lw%{= kW}%50> %n%f* %t%{= kG}%+Lw%< %{= kG}%-=%c:%s%{-}'              
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %m-%d %{W}%c %{g}]'

Этот метод использует экранные команды selectи stuffкоманды, чтобы сначала выбрать одну из вкладок, а затем «вставить» в нее строку.

Скриншот

ss экрана с вкладками и командами

3. Создание # 2 без использования .screenrcфайла

Если вы ищете сценарий, где вы можете:

  1. создать сеанс экрана
  2. загрузить его с помощью вкладок
  3. каждая вкладка запускает свои собственные команды
  4. не требует .screenrcфайла

Тогда это для вас! Будьте готовы, хотя. Это может быть немного сложно с командной строкой.

Для начала давайте создадим сеанс экрана:

$ screen -AdmS myshell -t tab0 bash

Выключатели -AdmS делают следующее:

(См. Экранную страницу man для более подробной информации)

-А

    Adapt the sizes of all windows to the size of the  current terminal. 
    By default, screen tries to restore its old window sizes when
    attaching to resizable terminals

-d -m

    Start screen in "detached" mode. This creates a new session but
    doesn't attach to it. This is useful for system startup scripts.

-S имя сеанса

    When creating a new session, this option can be used to specify a
    meaningful name for the session. This name identifies the session for
    "screen -list" and "screen -r" actions. It substitutes the default
    [tty.host] suffix.

Теперь давайте начнем загружать его с помощью вкладок + их команд:

$ screen -S myshell -X screen -t tab1 vim
$ screen -S myshell -X screen -t tab2 ping www.google.com
$ screen -S myshell -X screen -t tab3 bash

Эти 3 команды создадут 3 дополнительные вкладки, запустят vim, ping google и запустят оболочку bash. Если мы перечислим сеансы экрана, мы увидим следующее:

$ screen -ls
There is a screen on:
        26642.myshell   (Detached)
1 Socket in /var/run/screen/S-root.

Если мы подключимся к сеансу экрана myshell и перечислим вкладки, которые в нем содержатся, мы увидим следующее:

$ screen -r myshell

Нажмите эту комбинацию клавиш: Ctrl+ с Aпоследующим Shift+"

Num Name                                                                   Flags

  0 tab0                                                                       $
  1 tab1                                                                       $
  2 tab2                                                                       $
  3 tab3                                                                       $

Переключение на tab2 :

64 bytes from ord08s08-in-f20.1e100.net (74.125.225.116): icmp_seq=443 ttl=55 time=41.4 ms
64 bytes from ord08s08-in-f20.1e100.net (74.125.225.116): icmp_seq=444 ttl=55 time=33.0 ms
64 bytes from ord08s08-in-f20.1e100.net (74.125.225.116): icmp_seq=445 ttl=55 time=30.1 ms

Скриншот

сс экрана начата с кли

Вышеприведенные команды являются основным способом выполнения того, что ищет OP. Это, конечно, может быть сжато и уточнено с использованием псевдонимов Bash или даже сценариев оболочки, это просто для демонстрации возможностей и демонстрации пути!

Ссылки


2
Если я не пропустил Q, он хочет выполнить команду при запуске сеанса. Обычноscreen "cd /foo/bar/; summon_cthulhu;" <<-- in that screen session
— Runium

Вы думаете, что он имеет в виду, открыть экран с вкладками и запустить команду внутри одного из них?
— SLM

Да. Запустите некоторую команду оболочки при запуске в пределах экрана, как обычно, когда вы входите в систему после загрузки и получаете Last login on ... Welcome to XXX, N new mails..... По крайней мере, так я прочитал заголовок Q.
— Runium

Прочитайте его комментарии на Q, он хочет оба.
— SLM

молодец, я бы тоже хотел проголосовать, но моя незначительная репутация помешала мне :)
— Ахмед Заин Эль Дейн
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.