在我的 .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”的特定情况。