Linux gnu screen - 屏幕启动时立即运行命令?

Linux gnu screen - 屏幕启动时立即运行命令?

在我的 .screenrc 文件中,我有以下行来打开一个屏幕窗口:

screen -t "normal"

这行代码打开另一个窗口并运行 top:

screen -t "top" top

这些工作得很好,所以我想立即df && ls -alh在第三个窗口中运行,所以我将这行放入了.screenrc:

screen -t "df" df && ls -alh

df 窗口从未出现,所以我认为 && 可能是问题的原因,并仅使用 df 进行尝试。

screen -t "df" df

df 窗口仍然无法出现。

问题:如何通过 screenrc 在同一个屏幕窗口中运行一个命令,然后再运行另一个命令?我希望它的行为与在 bash 中完全相同。感谢您的任何建议。

答案1

它可能出现了,但运行后就消失了。

请尝试以下操作:

screen -t "df" bash -c 'df && sleep 50'

df这将显示命令的秒数输出50

为了获得有用的df输出我建议您使用watch

screen -t "df" watch -n 10 df

这将df每 10 秒运行一次,因此您将在该终端上获得可用磁盘空间的实际状态。

答案2

老问题,但出现在搜索结果中,在我找到最干净的答案之前这里

一些对我有用的解决方案:

screen -t Files zsh -c 'ls -lahG; exec zsh'

在我的 .screenrc 文件中,在 'ls' 命令/过程完成后,'exec zsh' 会在区域内的窗口中打开另一个命令提示符(类似于在 GNU screen 中手动在窗口的 shell 中输入命令的行为;我假设它比运行 'sleep' 命令更有效,但如果我错了,请及时纠正。

screen -t Files zsh -c 'vim .'

以上适用于使用“ls”的特定情况。

相关内容