iterm2/iTerm2\343\201\247\343\203\252\343\203\242\343\203\274\343\203\210\343\203\236\343\202\267\343\203\263\343\201\253SSH\346\216\245\347\266\232\346\231\202\343\200\201\343\202\277\343\203\274\343\203\237\343\203\212\343\203\253\343\201\256\350\203\214\346\231\257\343\201\253\343\203\233\343\202\271\343\203\210\345\220\215\343\202\222\350\241\250\347\244\272\343\201\231\343\202\213.md
... ...
@@ -0,0 +1,57 @@
1
+LLMで生成。以下を`~/.zshrc`に追加する。
2
+
3
+```bash
4
+function ssh() {
5
+ local args=("$@")
6
+ local iTermHost=""
7
+
8
+ # (1) 引数をざっと解析して「ホストっぽいもの」を探す
9
+ # - 「--」が来たらオプション解析は終わり
10
+ # - `-xxx` のようなハイフンから始まるものはオプションとみなす
11
+ # - それ以外を見つけたら、それをホスト名候補として取り出す
12
+ local parsingOptions=1
13
+
14
+ for arg in "${args[@]}"; do
15
+ # オプション解析の終了を示す "--" が来たらパース終了
16
+ if [[ "$arg" == "--" ]]; then
17
+ parsingOptions=0
18
+ continue
19
+ fi
20
+
21
+ # まだオプションを解析中
22
+ if [[ $parsingOptions -eq 1 ]]; then
23
+ if [[ "$arg" =~ ^- ]]; then
24
+ # ハイフンから始まればオプションとみなしてスキップ
25
+ continue
26
+ else
27
+ # これがホスト名(もしくは user@host)だとみなして記録
28
+ iTermHost="$arg"
29
+ parsingOptions=0 # 一旦ホストが見つかったら解析終了
30
+ fi
31
+ else
32
+ # すでにホスト名は見つかっているので無視 (command 部分など)
33
+ break
34
+ fi
35
+ done
36
+
37
+ # (2) user@host 形式ならホスト部だけ抜き出す
38
+ if [[ "$iTermHost" == *@* ]]; then
39
+ iTermHost="${iTermHost#*@}" # user@host → host
40
+ fi
41
+
42
+ # (3) バッジを設定(iTerm2 以外の場合は何もしなくてもOK)
43
+ if [[ -n "$iTermHost" ]]; then
44
+ echo -ne "\033]1337;SetBadgeFormat=$(echo -n "$iTermHost" | base64)\a"
45
+ else
46
+ # ホスト名がとれなかった場合、空にする or 何もしないなど好みで
47
+ echo -ne "\033]1337;SetBadgeFormat=$(echo -n "" | base64)\a"
48
+ fi
49
+
50
+ # (4) 実際の ssh を呼び出す
51
+ # /usr/bin/ssh のパスはご自身の環境に合わせて修正
52
+ /usr/bin/ssh "${args[@]}"
53
+
54
+ # (5) SSH終了後にバッジをリセット(空にするなどお好みで)
55
+ echo -ne "\033]1337;SetBadgeFormat=$(echo -n "" | base64)\a"
56
+}
57
+```
... ...
\ No newline at end of file