Gnu 화면에서 탭 창을 열고 각 탭 창에서 명령을 실행하는 방법

Gnu 화면에서 탭 창을 열고 각 탭 창에서 명령을 실행하는 방법

세션을 시작할 때 아래와 같이 이름을 지정하십시오.screen -S name1

그놈 터미널에서 탭을 열 때처럼 이 화면 세션에서 탭 창을 열고 싶습니다.

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

그래서 뭐 할까?

답변1

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}]'

스크린샷

스크린 세션 ss

2. 화면의 탭(내부적으로 명령 실행)

다음 예에서는 .screenrc2개의 탭을 만들고 각 탭에서 3개의 echo 명령을 실행합니다.

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}]'

이 기술은 화면 selectstuff명령을 활용하여 처음에 탭 중 하나를 선택한 다음 해당 탭에 문자열을 "채웁니다".

스크린샷

탭과 명령이 있는 화면 SS

3. 파일 생성을 사용하지 않음 # .screenrc2

다음을 수행할 수 있는 시나리오를 찾고 있는 경우:

  1. 스크린 세션 생성
  2. 탭으로로드
  3. 각 탭이 자체 명령을 실행하도록 허용
  4. .screenrc서류가 필요 하지 않습니다

그렇다면 이것은 당신을 위한 것입니다! 하지만 준비하세요. 명령줄을 사용하는 것은 약간 까다로울 수 있습니다.

먼저 스크린 세션을 생성해 보겠습니다.

$ screen -AdmS myshell -t tab0 bash

이 스위치는 -AdmS다음을 수행합니다.

(보다스크린 매뉴얼 페이지자세한 내용은)

-ㅏ

    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

-DM

    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을 실행하고 google에 ping을 실행하고 bash 쉘을 시작합니다. 스크린 세션을 나열하면 다음이 표시됩니다.

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

스크린 세션에 연결하면,내 껍질을 클릭하고 포함된 탭을 나열하면 다음이 표시됩니다.

$ screen -r myshell

이 키 조합을 누르십시오: Ctrl+ A다음에 Shift+"

Num Name                                                                   Flags

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

로 전환탭 2:

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

스크린샷

CLI에서 시작된 화면 SS

위의 명령은 OP가 추구하는 것을 달성하는 기본 방법입니다. 물론 이것은 Bash 별칭이나 쉘 스크립트를 사용하여 압축하고 개선할 수 있습니다. 이는 단지 기능을 보여주고 방향을 제시하기 위한 것입니다!

인용하다

답변2

답변에 약간의 추가. stuff는 먼저 명령을 에코한 다음 이를 명령줄에 넣은 다음 \n 또는 ^M이 줄을 끝내면 명령을 실행합니다.

에코가 나를 짜증나게 하기 때문에 마지막 명령으로 \nclear\n을 연결하여 화면 창이 깨끗하게 시작되도록 합니다.

관련 정보