2011-09-28 86 views
6

有没有办法从我的.screenrc发送一系列命令到GNU屏幕窗口?看起来这应该是很容易做到:从.screenrc运行GNU屏幕窗口中的命令

.screenrc:

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 

我已经在屏幕手册页几次,却找不到任何将<send command to last created window>

谢谢, 最大

回答

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

Keith的回答能够完成任务,但它关系窗口这一进程,使尽快申请执行完毕,窗口关闭。

这里是我结束了这样做的工作完美:

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.然后是一个M.这是一个原始的换行符。在几乎任何CLI程序(vi,emacs,shell)中,都可以按CTRL-V,然后按Enter生成此字符。

这是如何工作的? stuff命令将给定的字符串直接输入到控制台中。如果你自己输入了命令,换行符在最后实际上会发送命令。希望有所帮助!我发现这种方法是远远比其他更稳定可靠。

+0

太棒了!它还有使用bash别名的额外好处。谢谢! – meridius