Buat tautan yang dapat diklik di terminal

13

Apakah mungkin untuk memproses / mengubah output dari grep (atau menghasilkan grep-seperti hasil, menemukan string dan / atau pola dalam file, dengan cara lain) sehingga hasil pencarian dapat digunakan sebagai tautan (yaitu, hyperlink) untuk membuka editor? Saya ingin mengklik di dalam hasil saya dan membuka editor saya di baris yang dipilih.filename:line_numbergrep

$ 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);

Saya tahu cara mendaftar protokol dalam sistem untuk membuka editor. Sebagai contoh, semua URL seperti sblm://*di sistem saya terbuka di Sublime Text. Pertanyaan saya adalah: bagaimana cara membuat tautan khusus di terminal guake (atau mungkin itu tidak bergantung pada gempa dan berfungsi untuk program terminal default)?

Catatan: pertanyaan terkait (?), Apakah ada aplikasi terminal yang memungkinkan nama file diklik? , tidak jelas pada detail implementasi / solusi tertentu, dan tidak secara eksplisit menyebutkan persyaratan saya untuk melompat langsung ke baris yang diidentifikasi dalam file.

Kein
sumber

Jawaban:

4

Versi terminal GNOME yang lebih baru sekarang mendukung hyperlink dengan target khusus melalui sekuens escape tertentu. Mencoba

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

Membuka karya-karya ini dengan cara yang sama seperti yang dijelaskan dalam jawaban oleh Stephen Kitt. Untuk mengatasi masalah yang Anda uraikan, Anda dapat menggunakan skrip sed (atau metode yang lebih canggih) untuk menerjemahkan nama file menjadi hyperlink. Bagi saya yang berikut melakukan pekerjaan (dalam bash dan dengan asumsi cara di atas untuk membuat hyperlink berfungsi)

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

(Saya tidak menginstal sublim tetapi kemungkinan besar Anda dapat dengan mudah mengubah file: menjadi slbm :)

Lihat juga: https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda (Ini berdasarkan jawaban saya di Terminal - buat hyperlink )

alfanumerik
sumber
Lihat juga purpleidea.com/blog/2018/06/29/hyperlinks-in-gnome-terminal untuk urlencodefungsi bash yang membuat semuanya berfungsi dengan benar ketika Anda memiliki spasi atau karakter menarik lainnya di direktori / nama file.
Marius Gedminas
3

Ini komputer; Anda dapat memprogramnya. :-)

Membuat sesuatu yang "dapat diklik" berarti memprogram aplikasi GUI atau entah bagaimana menggunakan HTML. Cara paling sederhana yang dapat saya pikirkan adalah menghasilkan halaman HTML HREFs, dan menyalurkan output ke, katakanlah, lynx , mengkonfigurasi browser untuk membuka emacs dengan tepat.

James K. Lowden
sumber