在多个服务器中的类似环境中工作时减少混乱

在多个服务器中的类似环境中工作时减少混乱

我经常必须同时打开远程服务器的多个 ssh 销售终端。,例如。开发和测试。这些路径和应用程序完全相同。如果我在一个窗口上运行某个特定命令到另一个窗口上,我经常会感到困惑。

例如,我想更新开发环境的 svn,但可能会在测试环境上运行它,如果这样做,会引发问题。

您能分享一下您是如何精确控制终端的吗?

答案1

我针对不同的环境使用不同的背景颜色:
生产:红色 - 在输入
测试之前先思考:黄色 - 确定要这样做吗?
开发者:绿色——随意疯狂

另一个必须具备的是不同的提示,一个好主意是包含主机名。

答案2

显然,最终总是您必须知道您在哪个终端中输入了哪些命令。现在,您可以执行以下操作来区分会话:

  • 使用不同颜色的终端(包括背景颜色)。实现这一目标的一种方法是使终端然而,使用特定的背景,在 shell 中请求它更灵活 - 最有可能在命令提示符字符串中(您将其放入 shell 初始化文件中(见下文);

  • 使用不同的命令提示符。这通常是通过设置环境变量来实现的,例如PS1- 阅读 shell 文档以了解到底需要做什么。使用ANSI 转义序列引入颜色和/或定位(请注意,尤其是后者可能会破坏某些终端中的输出)。

    bash 的示例如下所示:

    export PS1="^[[31;1m\u@\h:^[[0;1m\w^[[0m "
    

    这里\u代表用户名,\h主机名,\w当前工作目录,所以这会给你一个像这样的提示:

    示例提示

    代表^[转义字符,通常通过按Ctrl+V然后按 来插入Esc。它不是两个字符^[- 因此您不能从这里逐字复制它并期望它起作用。

    有无数种方法可以对此进行调整 - 为了将人们的注意力吸引到特别危险的终端而不使眼睛过度疲劳,使用例如鲜红色的命令也可能是一个合理的选择(您需要^[[0;31;1m使用就^[[0m在提示字符串的末尾)。

  • 某些终端可以将某些转义序列解释为标题 - 这样您就可以将提示的内容放入窗口标题中。请注意,这将干扰 shell 正确中断命令行的能力,除非您告诉它忽略这些转义序列(这当然对于颜色也有效 -bash这是通过将“零宽度”部分括在\[和之间来完成的\])。

  • 在远程计算机上使用终端多路复用器(在本地使用它也不是一个坏主意)。这一点怎么评价都不为过,特别是对于远程工作来说,它可以在连接断开时节省很多麻烦。 AFAIK,可以在 中获得自定义状态行screen,但人们tmux通常会尝试以各种可以想象的方式找到更好的方法。

  • 有些 shell 允许您将自己的功能挂接到命令处理中,因此您可以让 shell 在灾难发生之前询问您是否真的确定要执行特定命令。

结合以上内容。

相关内容