我经常必须同时打开远程服务器的多个 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 在灾难发生之前询问您是否真的确定要执行特定命令。
结合以上内容。