1d7fac67d02db4c44a2e687dfabb3ba5021cc28a
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 |