iTerm2 自動依照關鍵字上色 (Profile > Trigger)



前言

  • 工作上常常會看到系統錯誤訊息,如果能針對 timestamp (ISO8601 格式)、Warning 或 Error 等訊息上色,排查障礙時會快速很多。

  • 本篇介紹 iTerm2 上面的設定達到此目標。

  • Note: 需要了解正規表達式 (regex, regular expressions) 才會好用。



設定

  • 開啟 iTerm2 中的偏好設定,然後點擊 Profiles > Advanced > Triggers 中的 Edit

  • 點擊左下角 +
  • 貼上 regex 後、Action 要選擇 Highlight Text、然後調整顏色

附上 Regex:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 標示 error/critical
\b([Ee]rror|ERROR|[Cc]ritical|CRITICAL)\b


# 標示 warning
\b([Ww]arn|WARN)(ing|ING)?\b


# 標示 info
\b([Ii]nfo|INFO)\b


# 標示 timestamp: ISO-8601 format (有很多方法參考)
\b\d{4}-(0[1-9]|1[0-2])-([12]\d|0[1-9]|3[01])([T\s](([01]\d|2[0-3])\:[0-5]\d|24\:00)(\:[0-5]\d([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3])\:?([0-5]\d)?)?)?\b


# 標示 IPv4
\b(?<![0-9])(?:(?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2}))(?![0-9])\b


# 標示 IPv6 (選用不一定要)
\b((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\b


# URL
https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)
  • 2022-08-06 補上 URL 上色

  • 這樣看起來輕鬆多了




REF

  1. IPv4, IPv6 的 regex 複製自此:https://grokdebug.herokuapp.com/patterns#
  2. ISO8601 的 regex 也有點複雜,從這邊挑了一個解答用:https://stackoverflow.com/questions/12756159/regex-and-iso8601-formatted-datetime
  3. URL Regex:https://stackoverflow.com/questions/3809401/what-is-a-good-regular-expression-to-match-a-url
Licensed under CC BY-NC-SA 4.0
最後更新 2024-05-24 14:47

主題 StackJimmy 設計