天天看點

iterm2進階應用自動切換profile

自動切換profile

先上文檔 profile-switching

經常用這個功能來區分伺服器和本地環境。設定多個不同色調的profile,檢測到伺服器的時候,切換到高亮的profile,本地就切換回來。對于伺服器環境使用GBK編碼的情況也很實用。

具體方法是在preference->profile裡面,選中對應的profile,然後切換到advanced,下面有一個automatic profile switching。然後用[email protected]的格式進行填寫即可,支援使用星号(*)進行截斷。然後iterm2檢查到對應的使用者名和host的時候就會自動切到該profile了。

iterm2進階應用自動切換profile

至于如何檢測使用者名和host,有兩個途徑:

  1. 使用shell Integration。具體就是點選 iTerm2>Install Shell Integration。
  2. 當然,不是所有的環境都能安裝,伺服器極大可能不能安裝這個。是以就需要途徑2,使用trigger。trigger可以根據正則比對,抓去螢幕上的輸出,然後将使用者名和host上報給iterm2,使之實作自動profile切換。具體怎麼設定,看下面

Triggers

先上文檔 triggers

trigger可以說是iterm2進階功能裡面非常有意思的部分了。在介紹如何使用trigger擷取使用者名和host之前,我們先來看一下如何使用trigger,将特定的關鍵字高亮。同樣在preference->profile裡面,選中對應的profile,然後切換到advanced,這裡選擇Triggers

iterm2進階應用自動切換profile

這個是我設定的trigger清單。其中的Regular Expression是抓取表達式。Action是抓取到之後執行的内容。

比如你在伺服器tail一個日志。你會關注error,panic,fatal等關鍵字,希望能看到馬上發現他們。你可以在Regular Expression裡面寫(?!)error|panic|fatal。然後選擇Highlight Text,右邊選擇合适的顔色就行了。試試看在指令行執行echo error。就能看到效果了。

然後對于使用者和host上報,一般伺服器登入之後每個輸入行開始都有一個字首,字首裡面會有使用者和host資訊,就把這個抓出來就行了。例如你的伺服器是[email protected]:/home/user:這種字首,那麼你可以使用這個表達式:

^(\w+)@([\w.]+):.+%      

然後後面的Parameters就填入

\1@\2      

即可。注意,不知道iterm的文檔維護人怎麼想的,這個雖然是triggers的功能,但是這個樣例來自shell intergration。。。。

然後iterm就能收到你上報的host啦。

trigger還能用于實作rz,sz功能,具體參考iterm的文檔,照着設定就行了。基本的原理就是捕捉一個字首,然後執行對應的coprocess。

Badge

這個徽章功能會在一個視窗的右上角顯示一個水印。對于一下開一堆視窗的人來說非常好用。一個視窗做一件事情,不會搞混。簡單的設定方法就是使用cmd+i打開session設定視窗,然後進行設定

iterm2進階應用自動切換profile

特殊逃逸數控制符号

先上 文檔 escape-codes

這個也是一個很有意思的功能。它允許你在視窗接收到特殊的指令字的時候,執行一些操作。包括發一個通知,會在筆記本的右邊彈一個通知,跟推送消息是一個效果(需要你允許通知),變更profile,變更badge,将視窗強制拉到前台等。具體參考iterm的文檔,這裡說一下大概的使用方法。

特殊逃逸控制要求在螢幕輸出符合一下格式的一行輸出:

以 Esc開頭(二進制0x1b,在文檔中用^[表示)以Bel結尾(二進制0x07,在文檔中用^G表示)。中間為控制内容。

例如強制将視窗帶到前端的控制指令,在文檔中是這麼寫的:

^[]1337;StealFocus^G

用shell來輸出,就是這樣:

echo -e "\033]1337;StealFocus\07"
           

\033是八進制的0x1b,\07是八進制的0x07。

嘗試休眠10秒,然後執行這個echo。開始執行之後,十秒内,把iterm視窗最小化,等這個echo出來,iterm會把這個視窗重新拉出來。

sleep 10 && echo -e "\033]1337;StealFocus\07"
           

這個功能對于需要跑長時間任務,但是對于輸出結果時間非常敏感,希望有結果馬上知道的情況,非常有用。(例如跑一個攻擊防禦程式,需要遇到攻擊馬上彈出來那種)

繼續閱讀