應該有些人知道 screen 有 shelltitle 這個功能可以跟 shell prompt 配合,讓 screen 的標題是跑的程式的名稱。今天碰到一個問題是我想要讓設成「如果是 ssh 的話,抓空白後的東西,也就是 hostname」,弄了一下沒有成功,後來跑去看別的東西就先暫時放著了。
想過一個可能的惡搞法,讓一個東西吃 ssh-hostname 開頭的指令,然後這個會展開成 ssh hostname 之類的,這樣子就可以配合原本的 shelltitle 弄出我想要的東西,不過也還沒時間仔細研究可不可行。
有人知道怎麼惡搞的話,跟我說一下吧
直接利用 title-string escape-sequence (“ESCkESC\”) 呀。
–
我之前的作法是
寫一個 wrapper script 利用 $0 判斷 hostname,
根據 hostname 決定 title 後再利用 escape sequence 改變。
然後替常用的 host 分別建 symbolic link。
修正: title-string escape-sequence 是 “ESCk<title>ESC\”
我則是在 .bash_profile 中加
if [ "x${TERM}" = "xscreen" ]; then
PS1=”${PS1}\[33\]k\h\[33\]\\”;
fi
#!/bin/tcsh -f
set last=$argv[$#argv]
screen -t “> | $last”":” ssh $*
# 遠端的 prompt 也要 prompt 設好才行
Btw, 前幾天剛好在玩 vim 可以設 screen title
if $TERM == “screen”
” set title
set t_ts=^[k
set t_fs=^[\
auto BufEnter * :set title | let &titlestring = ‘vim:’ . expand(‘%’)
” auto VimLeave * :set notitle
endif
$last:ar is better.
感謝大家, 後來我用 sothat 的方法, 然後 bash 相對應的寫法是
last=${!#}
不過因為某些因素,我要寫在 .bashrc 裡面用 function 處理,可是這樣子 command alias 沒有用?
呃, 我知道為甚麼 alias 沒用了 XD