세션을 시작할 때 아래와 같이 이름을 지정하십시오.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}]'
스크린샷
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}]'
이 기술은 화면 select
과 stuff
명령을 활용하여 처음에 탭 중 하나를 선택한 다음 해당 탭에 문자열을 "채웁니다".
스크린샷
3. 파일 생성을 사용하지 않음 # .screenrc
2
다음을 수행할 수 있는 시나리오를 찾고 있는 경우:
- 스크린 세션 생성
- 탭으로로드
- 각 탭이 자체 명령을 실행하도록 허용
.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
스크린샷
위의 명령은 OP가 추구하는 것을 달성하는 기본 방법입니다. 물론 이것은 Bash 별칭이나 쉘 스크립트를 사용하여 압축하고 개선할 수 있습니다. 이는 단지 기능을 보여주고 방향을 제시하기 위한 것입니다!
인용하다
답변2
답변에 약간의 추가. stuff는 먼저 명령을 에코한 다음 이를 명령줄에 넣은 다음 \n 또는 ^M이 줄을 끝내면 명령을 실행합니다.
에코가 나를 짜증나게 하기 때문에 마지막 명령으로 \nclear\n을 연결하여 화면 창이 깨끗하게 시작되도록 합니다.