gpt4 book ai didi

bash - 如何在 .screenrc 中转义管道以便在启动时运行命令?

转载 作者:行者123 更新时间:2023-11-29 09:20:54 25 4
gpt4 key购买 nike

我正在使用 byobu/screen,我希望有一个新的 screen session 默认包含几个专门为跟踪特定日志文件而设置的窗口。

我的 .screenrc 看起来像这样(技术上这是我的 .byobu/windows 文件):

chdir /home/matt/code/project/logs
screen -t 'logs' tail -F current.log

chdir /home/matt/code/project
screen -t 'errors' tail -F current.log | grep -A 3 "ERROR"

chdir /home/matt/code/project
screen -t 'project'

chdir
screen -t 'bash'

我的意图是在新的 screen session 中设置四个窗口:

  1. 一个标题为“logs”的窗口,位于 current.log 文件的尾部
  2. 标题为“errors”的窗口尾随 current.log 文件和 greps for ERROR
  3. 标题为“project”的窗口从我项目的主目录开始
  4. 标题为“bash”的窗口从我的主目录开始。

但是, screen 中的管道 -t 'errors' tail -F current.log | grep -A 3 "ERROR" 命令最终被 screen 逐字解释,因此我的第二个窗口从未出现。

如何转义此命令中的管道以按照我的意愿对其进行解释?

此外,是否有更简单的方法来设置 screen/byobu 以启动在启动时运行(复杂)命令的窗口?

最佳答案

我最终解决了这个问题,方法是使用 stuff 命令模拟在窗口中输入命令并按回车键执行它。这具有很好的效果,可以在不终止窗口本身的情况下中断 screen 窗口中的 tail 命令。

这是我的 .screenrc 完成此任务的示例;我写了a longer explanation on my blog :

screen -t 'errors'
stuff 'tail -F /var/ec/current.log | grep -A 3 "ERROR"^M'

(^M 是通过按 Ctrl+V 输入的,使用键盘输入,而不是实际输入插入符号和大写字母 M)

关于bash - 如何在 .screenrc 中转义管道以便在启动时运行命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5665666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com