天天看点

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"
           

这个功能对于需要跑长时间任务,但是对于输出结果时间非常敏感,希望有结果马上知道的情况,非常有用。(例如跑一个攻击防御程序,需要遇到攻击马上弹出来那种)

继续阅读