ターミナルエミュレータ内でのハイパーリンク

(Note: The phrase “Hyperlinks in terminal emulators” is translated as a concise, natural Japanese title while preserving the original meaning and length.)

2026/03/13 12:32

ターミナルエミュレータ内でのハイパーリンク (Note: The phrase “Hyperlinks in terminal emulators” is translated as a concise, natural Japanese title while preserving the original meaning and length.)

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:


Summary

OSC 8 エスケープシーケンスは、ターミナルがコマンドライン出力に直接クリック可能なハイパーリンクを表示できるようにします。この機能は 2017 年春に GNOME Terminal と iTerm2 によって導入され、現在は VTE ターミナルエンジンの一部です。OSC 8 の採用状況をまとめた「OSC 8 adoption」ページが維持されており、今後さらに多くの VTE ベースのエミュレータが OSC 8 を採用することが期待されています。

Syntax

ESC ] 8 ; params ; URI ST
…text…
ESC ] 8 ; ; ST
  • params
    はオプションの key=value ペア(現在は
    id
    のみ)です。
  • URI
    はパーセントエンコードされている必要があり、サポートされるスキーム(
    http://
    ,
    https://
    ,
    ftp://
    ,
    file://
    ,
    mailto:
    )で始まらなければならず、
    file://
    URI の場合はホスト名がローカルホストと一致する必要があります(短い名前、完全修飾名、
    localhost
    、または空文字)。
  • ターミナルは OSC 8 を ST (
    ESC \
    ) または BEL (
    \a
    ) で終了できます。ST が推奨されます。

Examples

printf '\e]8;;http://example.com\e\\This is a link\e]8;;\e\\'

Use cases

  • apt-changelog
    のバグ ID を自動リンク化する。
  • git log
    でコミット ID をハイライト表示する。
  • エディタやユーティリティ(
    ls
    ,
    find
    など)で URL、ファイルパス、mailto リンクをリンク化する。

Link grouping & limits

ターミナルは隣接したセルをグループ化するためにオプションの小文字

id
を使用できます。VTE は ID が指定されていない場合、自動的に一意の ID を割り当てます。iTerm2 はヒューリスティックに隣接セルを結合します。
URI の長さは VTE と iTerm2 で約 2083 バイトまで制限され、VTE の
id
制限は 250 バイト(iTerm2 にハードリミットはありません)。すべてのパラメータと URI 文字は ASCII 32–126 必須で、エスケープされていない
:
;
は禁止です。

Security & compatibility

OSC 8 は通常のウェブ閲覧以外に新たなセキュリティリスクを導入しません。ターミナルはスキームをホワイトリスト化したり、クリック時に確認を要求したり、高いセキュリティ環境では機能を無効化することができます。OSC 8 を無視するターミナルは単にテキストを表示しますが、バグのあるターミナル(例:古い VTE バージョン、Windows Terminal ≤0.9)は出力を破損させる可能性があります。

Impact

ユーザーはシェルを離れずにクリック可能な URL を利用できるようになり、開発者はユーティリティやドキュメントにリンクを埋め込むことができます。一方で組織は適切に OSC 8 のホワイトリスト化または無効化を検討する必要があります。

本文

ターミナルエミュレーターにおけるハイパーリンク(HTML 風アンカー)

2025‑03‑24 更新: コメントは永久に無効化されています。以前のコメントは https://web.archive.org にアーカイブ済みです。

ほとんどのターミナルエミュレーターは画面上の URL を自動検出し、Ctrl+クリック、Cmd+クリック、または右クリックメニューで開くことができます。
以前は任意のテキストをウェブページのように URL にリンクさせることはできませんでしたが、2017 年春に GNOME Terminal と iTerm2 がこの機能を追加しました。GNOME Terminal は VTE ウィジェットを使用しており、他の VTE ベースのターミナルも追いつく予定です。また、参加したい任意のターミナルは歓迎されます。


速やかな例

printf '\e]8;;http://example.com\e\\This is a link\e]8;;\e\\\n'

出力は HTML のリンクと同様に振る舞います:

This is a link


対応アプリ

OSC 8 ハイパーリンクをサポートするターミナルやターミナルベースのアプリは、Alhadis が「OSC 8 adoption in terminal emulators」ページで一覧化しています。


使いどころ

  • apt‑changelog – バグ ID を対応トラッカーへのリンクとしてフォーマット。
  • git log – コミット ID をリポジトリのウェブフロントエンドへリンク。
  • ファイルビューア / エディタ – URI を自動検出し、画面に表示される一部だけでもハイパーリンク化。
    例: 仮想テキストエディタで二つのファイルが開かれているスクリーンショット
╔═ file1 ════╗
║          ╔═ file2 ═══╗
║http://exa║Lorem ipsum║
║le.com    ║ dolor sit ║
║          ║amet, conse║
╚══════════║ctetur adip║
           ╚═══════════╝

http://example.com
の任意の部分を Ctrl‑クリックするとそのページが開きます。

  • コアユーティリティ(ls、find) – 省略可能に
    file://…
    URI を付与し、グラフィカルアプリでワンクリックで開けるように。
  • less -R – OSC 8 シーケンスを色と同様に認識するため、パイプ経由で出力した際にもハイパーリンクが残ります。

エスケープシーケンス

ハイパーリンクは OSC 8 エスケープシーケンスで開きます:

OSC 8 ; params ; URI ST
  • OSC(Operating System Command) =
    ESC ]
  • params – コロンで区切ったキー=値ペアの任意リスト(例:
    id=xyz123
    )。現時点では
    id
    キーのみが定義されています。
  • URI – URI エンコードされたターゲット(
    http://
    ,
    https://
    ,
    ftp://
    ,
    file://
    ,
    mailto:
    など)。
  • ST(String Terminator) =
    ESC \
    。BEL (
    \a
    ) も受け付けますが推奨されません。

ハイパーリンクを閉じるには、同じシーケンスでパラメータと URI を空にします:

OSC 8 ; ; ST

開閉の注意点

  • ターミナルは状態機械です。OSC 8 は現在のハイパーリンクを変更するだけです。
  • 前のリンクを閉じずに新しいリンクに切り替えても、また逆も許容されます。
  • ハイパーリンクは色や太字など他の属性と同様に扱われます。

file://
URI とホスト名

ユーティリティはローカルホスト名(

gethostname()
)を
file://hostname/path
に含めるべきです。ターミナルはこれをローカルマシンと照合し、違えばファイルを開かずに代替案(例:scp)を提示します。許容されるホスト名には空文字列と
localhost
が含まれます。

ホバー時の下線 &
id
パラメータ

ターミナルはマウスホバーでハイパーリンクに下線を引きます。同じリンクに属するセルをグループ化するには、小文字の

id
を使用します。同一ターゲット URI と非空の同一
id
を持つセルは常に一緒に下線が付くようになります。

  • VTE は明示的な
    id
    が無い場合、自動でユニーク ID を割り当てます。
  • iTerm2 は隣接するセルで ID が無く同じ URI を共有しているものをグループ化します。

アプリがホバー時に下線を付けたくない場合は

id
を無視すれば OK です。


アプリケーション向けガイドライン

シチュエーション推奨実装
標準出力へ単純に印字するユーティリティID を割り当てない
ビューア / エディタなど複雑なアプリ明示的にユニークな
id
(例:ファイルオフセット、
(row,column)
位置)を付与。マルチウィンドウ対応ならウィンドウ ID を含める。
OSC 8 コンテンツ自体を表示するアプリ(multiplexer, less -R 等)受信したハイパーリンクに既に
id
がある場合は、パネル/ウィンドウごとのユニーク文字列で接頭辞を付ける。無い場合は順序付き整数等で生成する。明示的な
id
と衝突しないよう注意。
画面上に残るフルスクリーンアプリスクロールバックで以前のセッションと重複しないよう、プロセス固有の識別子を
id
に追加する。

機能可否検出

現時点ではアプリがターミナルがハイパーリンクに対応しているかどうかを検知する方法はありません(将来変更される可能性があります)。


後方互換性

ECMA‑48 に従って OSC を正しく解析するターミナルは、サポートされていないハイパーリンクを無視し、ターゲット URI のテキストだけを表示します。OSC 8 でゴミデータを出力するターミナルはバグとみなされます(例:VTE ≤ 0.46.2, 0.48.1; Windows Terminal ≤ 0.9; Emacs 内蔵ターミナル; very long URLs の

screen
)。


長さ制限

項目制限
URI 長(VTE & iTerm2)2083 バイト(実際は約2000)。
ID 長(VTE)250 バイト(変更の可能性あり)。iTerm2 には制限なし。
OSC 8 シーケンス全体長ターミナルにより制限される場合がある。VTE は長いリンクを多く書くとスクロールバックで遅くなることがあります。

ユーティリティは ID をこれらの制限内に抑えるべきです。


エンコーディング

パラメータと URI にはバイト 32–126 のみを使用してください。その他のバイトは未定義動作となります。URI 内で 32–126 外のバイトが現れる場合は必ず URI‑エンコードします。

:
;
はパラメータや値内でエスケープしないといけません。


セキュリティ

この機能はウェブ特有の脆弱性を新たに導入するものではありませんが、ターミナル側で以下のような対策が考えられます:

  • 既知スキームのみホワイトリスト化し、未知スキームは確認後に開く。
  • 単なるクリックではなく Ctrl+クリックや右クリックメニューを要求する。
  • URI を表示してから確認を求める。
  • ハイパーリンク機能を完全に無効化できるオプションを提供。

リンク

  • [GNOME Terminal の議論]
  • [iTerm2 の議論]
  • [テストファイル]

同じ日のほかのニュース

一覧に戻る →

2026/03/14 7:52

オープンソースドキュメントサイトで、39 個の Algolia 管理キーが漏洩していることを発見しました。

## Japanese Translation: ## 要約 この記事は、Algolia の DocSearch プログラムに広く蔓延するセキュリティ欠陥を暴露しています。多数のオープンソースプロジェクトが誤ってフルパーミッション API キーを公開サイトに掲載し、即座に脅威を生み出しました。 - **主なインシデント**:最初に報告された侵害は 10 月に *vuejs.org* で発生し、サイトがフルアクセスの管理者キーで動作していました。Vue はその漏洩を認め、レポーターを Security Hall of Fame に追加し、キーをローテーションしました。 - **問題の範囲**:調査により、影響を受けた 39 件すべての DocSearch デプロイメントがフロントエンド構成で管理者レベルのキーを使用していたことが判明しました(35 件は数千件の `docsearch-config` ファイルをスクレイピングし、約15 000 のドキュメントサイトをクロールした結果、4 件は GitHub 履歴分析で発見されました)。 - **漏洩した権限**:リークされたキーは検索、addObject、deleteObject、deleteIndex、editSettings、listIndexes、browse、analytics、logs、および NLU アクセスを含む広範な操作を許可しました。 - **高プロファイルの被害者**:Home Assistant(約85 k GitHub スター)、KEDA(CNCF プロジェクト)、vcluster(10万件以上のインデックスレコード)などが露出対象でした。 - **根本原因**:開発者は意図した検索専用キーではなく、書き込みまたは管理者キーを公開フロントエンド構成に誤って埋め込んでしまいました。 - **ユーザーと企業へのリスク**:攻撃者は任意のレコードを追加・変更・削除し、インデックス全体を削除したり、ランキング設定を変更したり、すべてのインデックス済みコンテンツをエクスポートしたり、悪意あるリンクで検索結果を汚染したり、フィッシングリダイレクトを開始したり、検索機能を完全に停止させる可能性があります。企業は評判損失と運用障害に直面しました。SUSE/Rancher は公開後 2 日以内にキーを取り消し、Home Assistant は修復を開始していましたが、報告時点では元のキーをアクティブなままでした。 - **著者のアウトリーチ**:著者は数週間前に Algolia に漏洩したすべてのキーの完全リストをメールで送付しましたが、返答はありませんでした。残りのすべてのキーは現在も有効です。 - **手法**:約3 500 のアーカイブ済み `docsearch-config` ファイルをスクレイピングし、15 000 近いドキュメントサイトで正規表現による埋め込みクレデンシャルのクロール、GitHub コード検索、および TruffleHog を 500 以上のリポジトリに対して実施しました。 - **将来展望と修復推奨**:誤設定されたキーは39 件を超えている可能性があります。DocSearch を運用している場合、フロントエンド構成に埋め込まれたキーが **検索専用** キーであることを確認し、公開サイト上で書き込み/管理者キーの使用を避けてください。 このインシデントは、Algolia の DocSearch プログラムにおいて開発者が意図せずフルアクセスキーをスケールして露出させるという体系的な問題を浮き彫りにし、オープンソースエコシステム全体でより厳格なキー管理実践の必要性を強調しています。

2026/03/13 21:46

はい。ご自身のハードウェア上で多くのAIモデルをローカルに実行することが可能です。 典型的な手順は次のとおりです。 1. **モデルを選択**(例:GPT‑2、LLaMA、Stable Diffusionなど)。 2. **依存関係をインストール**。PyTorchやTensorFlow、そして対象モデルのリポジトリをセットアップします。 3. **重みファイルをダウンロード**してローカルに保存します。 4. **推論を実行**。スクリプトやAPIラッパー経由でローカル上で動作させます。 GPT‑4規模の大型モデルの場合は、強力なGPUや専用ハードウェアが必要になります。一方、より小型・蒸留済みバージョンなら一般的なノートPCでも実行可能です。

## Japanese Translation: 提供された要約は明確で簡潔であり、リストのすべての重要ポイントを正確に反映しつつ、有用な文脈フレームワークも提示しています。修正は不要です。

2026/03/11 23:34

**Show HN:Channel Surfer – YouTubeをまるでケーブルTVのように見る**

## Japanese Translation: **概要:** Channel Surfer Press は準備が整い、すでにRDUによって構築されています。

ターミナルエミュレータ内でのハイパーリンク (Note: The phrase “Hyperlinks in terminal emulators” is translated as a concise, natural Japanese title while preserving the original meaning and length.) | そっか~ニュース