web-dev-qa-db-ja.com

ターミナルでクリック可能なリンクを作成する

検索結果を使用できるように、grepからの出力を処理/変換する(またはgrepのような結果を生成し、ファイル内の文字列やパターンを見つけるなど)ことは可能ですか?エディターを開くためのリンク(つまり、ハイパーリンク)として? grepの結果でfilename:line_numberをクリックし、選択した行でエディターを開きます。

$ grep "mServiceIntent" -R ./src/
./src/example/PhotoThumbnailFragment.Java:67    private Intent mServiceIntent;
./src/example/PhotoThumbnailFragment.Java:194        mServiceIntent =
./src/example/PhotoThumbnailFragment.Java:203        getActivity().startService(mServiceIntent);

システムにプロトコルを登録してエディターを開く方法を知っています。たとえば、私のシステムのsblm://*のようなすべてのURLはSublimeTextで開きます。私の質問です:guakeターミナルでカスタムリンクを作成する方法(またはそれは地震に依存せず、デフォルトのターミナルプログラムで機能します)?

注:関連する(?)質問 ファイル名をクリック可能にするターミナルアプリはありますか? 、特定の実装/ソリューションの詳細があいまいであり、直接ジャンプするという私の要件について明示的に言及していませんファイル内の識別された行。

13
Kein

新しいバージョンのGNOMEターミナルは、特定のエスケープシーケンスを介したカスタムターゲットとのハイパーリンクをサポートするようになりました。試す

echo -e '\e]8;;http://example.com\aThis is a link\e]8;;\a'

これらを開くと、StephenKittの回答で説明されているのと同じように機能します。説明した問題に対処するには、sedスクリプト(またはより高度な方法)を使用して、ファイル名をハイパーリンクに変換します。私にとっては次のことが仕事をします(bashで、ハイパーリンクを作成する上記の方法を想定しています)

grep "mServiceIntent" -R ./src/ | sed -e $'s#^\(.*\):#\e]8;;file:'`pwd`/$'\\1\a\\1\e]8;;\a#'

(私はsublimeをインストールしていませんが、おそらくfile:をslbmに変更するだけです:)

参照: https://Gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda (これは ターミナル-ハイパーリンクの作成 での私の回答に基づいています)

4
alphanum

それはコンピュータです。あなたはそれをプログラムすることができます。 :-)

何かを「クリック可能」にするには、GUIアプリケーションをプログラミングするか、どういうわけかHTMLを使用します。私が考えることができる最も簡単な方法は、HREFのHTMLページを生成し、出力をパイプでlynxにパイプし、ブラウザがemacsを適切に開くように構成することです。

3
James K. Lowden