我希望我的 gnome 终端在其标题栏中显示我当前的用户和主机,以及当我使用 ssh 时远程的用户和主机。
为此,我创建了一个脚本~/bin/ssh
,~/bin
在我的PATH
之前/usr/bin
:
#!/bin/bash
echo -ne "\033]0;${1}\007"
/usr/bin/ssh $@
这工作得很好(可以说,对于意外的参数顺序来说并不稳健)。即使退出 ssh 会话后,窗口标题也会很好地恢复。
我的问题是尝试使用的其他程序ssh
会受到此生成的干扰stdout
。git fetch
例如,呕吐\033]0;
。
我的问题是:如何改进脚本,使其保留其名称ssh
,但stdout
仅在相关情况下给出?
必须有某种变量来告诉是否有任何窗口标题需要更改?我想TERM
在运行 via 时仍然定义了git
,所以这是行不通的。
我可以将字符串发送到另一个流吗?
我应该解析选项并且在某些条件下ssh
不输出吗?stdout
答案1
您希望您的脚本检查其标准输出是否将连接至 tty。
参考这个stackoverflow问题,在 bash 中检查 isatty
#!/bin/bash
# set the terminal title, if I'm running in a terminal
if [[ -t 1 ]]; then echo -ne "\033]0;${1}\007"; fi
/usr/bin/ssh "$@"
请注意,您始终要引用"$@"