Bash

GNOME 3.14+ 推出新的 gnome-terminal 並設置標題

  • April 11, 2016

令許多人失望的是,選項卡/視窗標題無法再設置--title

我使用 bash。我有一些用於連接遠端伺服器的別名。

alias c:prod='gnome-terminal --hide-menubar --profile=Production \
--title="Production Server" -e "ssh <url>" &'

我找到了一個 GNOME 3.14+ 的解決方法來設置標題,一旦放入,它就可以在命令行中執行良好.bashrc

function set-title() {
 if [[ -z "$ORIG" ]]; then
   ORIG=$PS1
 fi
 TITLE="\[\e]2;$@\a\]"
 PS1=${ORIG}${TITLE}
}

但是,這似乎只有在遠端伺服器中放置和呼叫時才有效,.bashrc即我只能在登錄後更改標題。

如果我在連接之前嘗試更改新視窗的標題,它沒有任何效果:

alias c:prod='gnome-terminal --hide-menubar --profile=Production \
-e "bash -c \"source ~/.bashrc;set-title Production;ssh <url>\"" &'

當終端在我的盒子上執行時,在遙控器上設置視窗標題感覺不對,而且我不能讓它在我的使用者碰巧沒有主目錄的伺服器上工作.bashrc

有沒有一棵樹我看不到的森林?

  1. 將函式附加set-title~/.bashrc
function set-title() {
 if [[ -z "$ORIG" ]]; then
   ORIG=$PS1
 fi
 TITLE="\[\e]2;$@\a\]"
 PS1=${ORIG}${TITLE}
}
  1. 安裝expect,如果你沒有它:
sudo apt-get install expect
  1. 使用內容創建ProductionServer.sh
#!/usr/bin/env expect

spawn bash
expect -re $ {send -- "set-title \"Production Server\"\rclear\rssh user@1.2.3.4\rclear\r"}
interact
exit
  1. gnome-terminal帶參數執行:
gnome-terminal --hide-menubar -e ~/ProductionServer.sh

也許這個過程可以優化,但問題已經解決了。

引用自:https://unix.stackexchange.com/questions/212055