목록에서 각 디렉토리에 대해 하나의 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.