等待屏幕 window 结束
Wait for screen window to end
我正在编写一个 shell 脚本,它利用屏幕一次显示多个内容(分屏)
windows 之一是 "gui" 代码,它会询问用户问题,而其他 windows 显示各种进度项。
脚本的一部分,我需要 vim 一个文件。但这部分代码位于带有重定向输入的 subshell 中。 vim 在这里效果不佳*
所以我想我可以打开一个新屏幕 window 并在其中加载 vim screen -X screen vim file
问题是我需要 gui 代码等到 vim 退出后再继续。
那么我如何从屏幕内等待特定屏幕 window 结束?
screen -ls
在这里不起作用,因为它只是我需要监视的整个会话中的几个 windows 之一。
我也查看了 screen -QX windows
但这似乎会中断 vim 会话
* 关于 vim 和子 shell:我试过使用 exec 3<&1; cat file1 | ( read whatever; vim file2 <&3 )
但这有一些主要问题(例如看不到前几行文件!)
根据@William 的评论此代码:
screen -X screen vim --servername MYSERVER`
sleep 1
vim --servername MYSERVER --remote-wait file.txt
在单独的 window 中打开 vim(并聚焦它)
然后在该会话中打开文件并等待用户退出 vim
似乎需要睡眠才能给他们 vim 会话时间来启动,否则第二个命令找不到 vim 服务器而是尝试在本地编辑(这赢得了在重定向的子 shell 中工作)
我正在编写一个 shell 脚本,它利用屏幕一次显示多个内容(分屏) windows 之一是 "gui" 代码,它会询问用户问题,而其他 windows 显示各种进度项。
脚本的一部分,我需要 vim 一个文件。但这部分代码位于带有重定向输入的 subshell 中。 vim 在这里效果不佳*
所以我想我可以打开一个新屏幕 window 并在其中加载 vim screen -X screen vim file
问题是我需要 gui 代码等到 vim 退出后再继续。
那么我如何从屏幕内等待特定屏幕 window 结束?
screen -ls
在这里不起作用,因为它只是我需要监视的整个会话中的几个 windows 之一。
我也查看了 screen -QX windows
但这似乎会中断 vim 会话
* 关于 vim 和子 shell:我试过使用 exec 3<&1; cat file1 | ( read whatever; vim file2 <&3 )
但这有一些主要问题(例如看不到前几行文件!)
根据@William 的评论此代码:
screen -X screen vim --servername MYSERVER`
sleep 1
vim --servername MYSERVER --remote-wait file.txt
在单独的 window 中打开 vim(并聚焦它) 然后在该会话中打开文件并等待用户退出 vim
似乎需要睡眠才能给他们 vim 会话时间来启动,否则第二个命令找不到 vim 服务器而是尝试在本地编辑(这赢得了在重定向的子 shell 中工作)