2011-09-28 7 views
6

私の.screenrcから一連のコマンドをGNUスクリーン・ウィンドウに送る方法はありますか?行うのは簡単なはずのように思える:GNUのコマンドを実行します。スクリーン・ウィンドウ.screenrcから

.screenrcの:私はスクリーンのmanページ、数回にわたり行ってきたが、<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

素晴らしい!私は、 '-c'で渡された文字列の実行が終了した後にbashが終了することを知りませんでした。 – 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

関連する問題