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


30

이런 이름의 세션을 시작할 때 screen -S name1

gnome-terminal에서 탭을 열 때와 같이이 화면 세션에서 탭 창을 열고 싶습니다.

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

어떻게해야합니까?


둘 다 탭을 여는 방법을 알고 터미널을 무시하고 탭을 연 후 실행 명령
Ahmed Zain El Dein

아래에 설명 된 기술은 당신이 찾고있는 탭을 보여줍니다. 명령을 실행할 방법이 필요합니까?
slm

하지만 사실은 내가 오전 초보자 그리고 난 그나마 u는 나에게 창 아인 화면에 열려있는 탭에 구문이 있다는 것을 정확히 ı 생각을하고 싶지 이해하지만, 내가 일부 파일에 몇 줄을 추가 할 것으로 보인다
아메드자인 엘 데인

좋아, 나는이 파일을 내 집 의이 파일에 복사하고 복사하기를 원하지만 내가 묻는 것은 screen -t name은 내가 아는 것처럼 화면에 제목을 제공하고 명명 된 세션에서 해당 탭을 열고 싶다는 것입니다. 예를 들어 screen -S name1 --tab -e "some commands"내가 원하는 것을 얻을 수 있기를 바랍니다.
Ahmed Zain El Dein

mmmm 이들은 특정 숫자가있는 미리 정의 된 탭입니다. 이것은 내가 묻는 것입니다 :) 런타임에 필요한 탭 수를 알지 못합니다. 그놈 터미널 명령과 비슷한 것이 gnome-terminal --tab -e "commands " --tab -e " commands 하나의 창을 엽니 다. 예를 들어 두 개의 탭이있는 터미널 내 말은 : U 감사합니다
아메드자인 엘 데인

답변:


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

스크린 샷

스크린 세션의 ss

2. 화면의 탭 (명령이 내부에서 실행 됨)

.screenrc아래 예제 는 2 개의 탭을 만들고 각각에 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. .screenrc파일 을 사용하지 않고 # 2 만들기

가능한 시나리오를 찾고 있다면 :

  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

-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

스크린 샷

cli에서 시작된 화면의 ss

위의 명령은 OP가 원하는 것을 수행하는 기본 방법입니다. 이것은 물론 Bash 별칭이나 심지어 쉘 스크립트를 사용하여 정리하고 다듬을 수 있습니다. 이것은 단지 기능을 보여주고 길을 보여주기위한 것입니다!

참고 문헌


2
Q를 읽지 않으면 세션을 시작할 때 명령을 실행하려고합니다. 일반적으로screen "cd /foo/bar/; summon_cthulhu;" <<-- in that screen session
Runium

그가 의미한다고 생각하고 탭이있는 화면을 열고 그중 하나에서 명령을 실행합니까?
slm

예. 부팅 후 get과 get 을 시작할 때와 같이 화면 에서 시작할 때 일부 쉘 명령을 실행하십시오 Last login on ... Welcome to XXX, N new mails..... 적어도 그것이 제가 Q 의 제목 을 읽는 방법 입니다.
Runium

Q에 대한 그의 의견을 읽고, 그는 둘 다 원한다.
slm

그럼 난 너무하지만 내 작은 명성이 : 저를 방지 투표를하고 싶은 일
아메드자인 엘 데인
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.