对屏幕中的所有窗口执行命令



我使用屏幕,有时我会更改.bashrc配置文件。因此,我想将.bashrc更改应用于所有屏幕窗口。不幸的是,屏幕只为创建新窗口读取配置文件,而不会为现有窗口重新加载.bashrc。

我的屏幕会话有一个或多个窗口。在附加屏幕之前,我想为每个窗口执行命令。命令是简单的"source~/.bashrc".

我尝试:

screen -X stuff "source ~/.bashrc"`echo -ne '15'`

它只适用于一个窗口。因此,我无法使用"prev"或"next"命令在屏幕窗口中进行迭代。

我已经阅读了屏幕人,文档,我会尝试搜索我的问题的解决方案:)

你能告诉我正确的方向吗?或者可能有人已经解决了类似的问题?

如果您使用的是最新版本的screen,则可以使用-Q选项,请参阅原始线程和此答案。这在这里起作用:

screen -Q windows | sed 's/[^0-9]*/n/g; s/^n//g' 
| while read; do 
    screen -S test -p $REPLY -X stuff "source ~/.bashrc"$'n'
  done

带有:

$ screen --version
Screen version 4.01.00devel (GNU) 2-May-06

请注意,如果您有多个会话,请使用-S对它们进行命名。在这种情况下,我正在使用一个名为test的会话。-p告诉屏幕将命令发送到哪个窗口。

还要注意ANSI-C引用($'n')的使用。

当执行-Q命令时,screen在运行命令前等待msgwait秒,通过将msgwait设置为零并在执行后重置来解决此问题,即

screen -S test -X msgwait 0
...
screen -S test -X msgwait 5

5是默认值。

相关内容

  • 没有找到相关文章

最新更新