목록에서 각 디렉토리에 대해 하나의 GNU 화면 탭을 여는 방법


2

나는 다음과 같은 스크립트를 가지고있다- 일종의 작품.

#!/bin/bash  

... define plugins, etc

for plugin in ${plugins[@]};
do 
  screen -t $plugin
done

내가하고 싶어

gnu-screen을 열고 각 플러그인 (디렉토리 이름)에 대해 플러그인 이름을 탭 제목으로 사용하여 새 탭을 시작하십시오.

지금하는 일

gnu-screen을 열고 화면 제목 (올바른 제목)에서 첫 번째 플러그인을 열지 만 명령을 계속 실행하지는 않습니다. 첫 번째 화면을 종료하면 두 번째 플러그인이 화면의 인스턴스에서 열리고 종료하면 세 번째 플러그인이 열립니다.

내가 놓친 것

에서처럼 screen -t $plugin &&이 말을하고 다음을 실행 하고 싶습니다 . 하지만 for 루프에서 어떻게 해야할지 모르겠습니다.


1
를 사용하여 화면을 분리 할 수는 -d -m있지만 기존 세션에 창을 추가 할 수없는 것 같습니다. 명령을 tmux사용하여이를 지원합니다 new-window.
Thom Wiggers

답변:


2
#!/bin/bash

plugins=(Plugin1 Plugin2 Plugin3)

plugin_cmd="#!/bin/bash\necho This is plugin __placeholder__\n"
for plugin in ${plugins[@]};
do
    echo -e ${plugin_cmd/__placeholder__/$plugin} > /tmp/${plugin}.bash
    chmod +x /tmp/${plugin}.bash
    screen -dmS $plugin
    screen -S $plugin -X stuff "/tmp/${plugin}.bash\n"
    screen -d -r -S $plugin
done

Thom Wigger의 조언을 따르고 tmux로 전환하십시오.


tmux로 전환해야했지만 이것은 대단했습니다. 건배
dax

1

왜 커스텀 .screenrc를 생성하지 않습니까?

예를 들어 플러그인이있는 폴더가 자주 변경되지 않으면 파일에 쓰십시오.

# Setting custom things:
startup_message off   

# starting a few shells with a preselected title
screen -t plugin1 0
screen -t plugin2 1
screen -t plugin3 2
screen -t my_email  -a -l exec elm  


플러그인 수가 자주 변경되면 bash 스크립트를 사용하여 파일에 쓸 수 있습니다. 예 :

rm ~/my_custom_screenrc
echo "# Setting custom things:" > ~/my_custom_screenrc
echo "startup_message off"      >> ~/my_custom_screenrc

bash 스크립트가 뒤 따릅니다.

for plugin in ${plugins[@]};
do 
  screen -t $plugin
done

>>위와 동일한 파일에 에코 ( ) 를 추가하십시오 .

마지막으로 화면을 시작하십시오. 예 :screen -c ~/my_custom_screenrc


이것은 완벽한 답변과는 거리가 멀고 일주일 내에 적절한 답변을 기대합니다 . 그러나 나는 이것을 의견으로 게시하고 이해할 수 있도록 충분한 마크 업을 유지하는 방법을 보지 못했습니다.


나는 이것이 승자가 될 것이라고 생각하기 시작했다;)
dax

John Schmitt의 nw 게시물은 좋은 것 같습니다. 또한 Tmux에서 +1입니다. (또는 스크린의 소스 코드를 본 사람들의 경우 -1000).
Hennes

어쨌든 +1, 나는 당신의 해결책이 나쁘지 않다고 생각합니다. 감사!
dax

0

시도해야합니다 :

screen -t $plugin xterm &

당신의 버전 대신에. 화면do 루프 를 계속할 수있는 가능성없이 갇힌 새 쉘을 엽니 다 . 따라서 앰퍼샌드 컨트롤을 즉시 반환되어 있는지 확인하게 때, 루프 의 xterm (또는 konsole 바로, 또는 당신이 무엇을 원하는가) 화면이 일을하고 어디 그래서 말하자면, 장소를 제공합니다.


플러그인이 4 개인 경우, '터미널에 연결해야합니다'라는 인쇄를 제안하는대로 스크립트를 변경하십시오. 네 번 종료합니다.
dax

06/02/06 기준으로 Screen 4.01.00devel을 사용하여 Debian Wheezy에서 이것을 시도해 보았습니다. 좀 더 자세한 정보를 제공해 주 screen시겠습니까? 이미 실행 중 입니까? 작업을 통해 원격으로 ssh또는 분리 된 스크립트를 시작 cron합니까? 어떤 OS가 아래에서 실행되고 있습니까?
ua2b

나와 대화하고 있니? 그렇다면 : 나는 아치 리눅스 / 데비안 Jessie / Kubuntu를 사용하여 시스템 부팅 스크립트와 ssh를 통해 스크립트를 시작합니다. 화면이 이미 실행 중인지 여부를 확인할 수 있습니다. 쿠분투 (시스템 내가에서 쓰고 있어요) 나는 화면을 4.1.0 ~ 20120320gitdb59704-9이 온
MariusMatutiae

나를 위해 @ ua2b-나는 4.3.30 (1) 화면을 사용하여 아치 3.17.2에 있습니다. 화면이 실행되지 않고 명령 줄에서 '정상적으로'스크립트를 시작합니다 .ssh를 통해 원격으로 분리되거나 분리되지 않습니다. 나는 그놈 터미널을 사용하고 있습니다.
dax
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.