2011-09-28 4 views
6

.screenrc에서 GNU 화면 창으로 일련의 명령을 보내는 방법이 있습니까? 쉽게 할 수 있어야한다 보인다 :.screenrc의 GNU 화면 창에서 명령 실행

.screenrc을 읽습니다 : 나는 화면 맨 페이지를 여러 번에 걸쳐 사라했지만, <send command to last created window> 것이다 아무것도 찾을 수 없습니다

startup_message off 
screen -t "RAILS SERVER" 
<send command to last created window> <my alias to cd Rails project> 
<send command to last created window> rails s 
screen -t "RAILS CONSOLE" 
<send command to last created window> <my alias to cd to Rails project> 
rails c 

.

감사합니다, 최대

답변

5

그것은 별도의 명령이 아니다; 창을 만드는 줄에서 실행할 명령을 지정하기 만하면됩니다. (테스트되지 않은) 예를 들어

:

screen -t "RAILS SERVER" sh -c "cd ... ; rails s" 
+0

나는 이것을 시도했다 :'screen -t "BLAH"sh -c "cd ~/.ssh"'. 'screen'을 실행했을 때 즉시 종료되었습니다. – maxenglander

+0

물론 그랬다. 'cd' 명령은 매우 빨리 끝납니다. 내가 제안한 명령을 시도해보십시오. –

+0

좋아요! 나는 bash가'-c'로 전달 된 문자열을 실행 한 후에 종료 할 것이라는 것을 깨닫지 못했습니다. – maxenglander

13

키스의 대답은 일을 얻을 수 있지만, 그 즉시 응용 프로그램의 실행이 완료 될 때, 창이 닫 있도록 그 프로세스에 창을 묶어.

는 여기에 내가 그 완벽하게 작동하고 감아 내용은 다음과 같습니다

screen -t "RAILS SERVER" 
stuff "cd $my_rails_directory; rails server^M" 

screen -t "RAILS CONSOLE" 
stuff "cd $my_rails_directory; rails console^M" 

여기서주의해야 할 중요한 부분은 ^M 문자입니다. 이것은 실제로^뒤에 M이 붙지 않습니다. 이것은 개행 문자가 아닙니다. 거의 모든 CLI 프로그램 (vi, emacs, shell)에서 CTRL-V를 누른 다음 ENTER를 눌러이 문자를 생성 할 수 있습니다.

어떻게 작동합니까? stuff 명령은 주어진 문자열을 콘솔에 직접 입력합니다. 마지막에있는 개행 문자는 실제로 직접 입력 한 것처럼 평소와는 다른 방식으로 명령을 보냅니다. 희망이 도움이됩니다! 나는이 접근법이 인 것을 발견했다. 다른 사람보다 더 안정적이고 신뢰할만한이다.

+0

굉장! 또한 bash 별명을 사용하여 작업 할 때 추가로 이점이 있습니다. 고맙습니다! – meridius

관련 문제