Erstellen Sie anklickbare Links im Terminal

13

Ist es möglich, die Ausgabe von Dateien zu verarbeiten / zu transformieren grep (oder grepähnliche Ergebnisse zu erzeugen , Zeichenfolgen und / oder Muster in Dateien zu finden, auf andere Weise), sodass die Suchergebnisse als Links (dh Hyperlinks) zum Öffnen eines Editors verwendet werden können? Ich möchte auf ein in meinem Ergebnis klicken und meinen Editor in der ausgewählten Zeile öffnen.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);

Ich kann Protokolle im System registrieren, um den Herausgeber zu öffnen. Zum Beispiel sblm://*öffnen sich alle URLs wie in meinem System in Sublime Text. Meine Frage ist: Wie erstelle ich benutzerdefinierte Links in Guake Terminal (oder hängt es vielleicht nicht von Quake ab und funktioniert für Standard-Terminal-Programme)?

Hinweis: Zugehörige Frage (?): Gibt es eine Terminal-App, mit der Dateinamen angeklickt werden können? , ist vage in Bezug auf spezifische Implementierungs- / Lösungsdetails und erwähnt nicht ausdrücklich meine Anforderung, direkt zu einer identifizierten Zeile in der Datei zu springen.

Kein
quelle

Antworten:

4

Neuere Versionen des GNOME-Terminals unterstützen jetzt Hyperlinks mit benutzerdefinierten Zielen über bestimmte Escape-Sequenzen. Versuchen

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

Das Öffnen funktioniert genauso wie in der Antwort von Stephen Kitt beschrieben. Um das von Ihnen beschriebene Problem zu beheben, können Sie ein sed-Skript (oder eine fortgeschrittenere Methode) verwenden, um die Dateinamen in Hyperlinks zu übersetzen. Für mich erledigt das Folgende den Job (in Bash und unter der Annahme, dass der oben beschriebene Weg zum Erstellen von Hyperlinks funktioniert)

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

(Ich habe nicht sublime installiert, aber höchstwahrscheinlich können Sie einfach die Datei ändern: in slbm :)

Siehe auch: https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda (Dies basiert auf meiner Antwort im Terminal - Hyperlinks erstellen )

alphanum
quelle
Siehe auch purpleidea.com/blog/2018/06/29/hyperlinks-in-gnome-terminal für die urlencodeBash-Funktion, mit der die Funktion korrekt ausgeführt wird, wenn Sie Leerzeichen oder andere interessante Zeichen in Verzeichnis- / Dateinamen haben.
Marius Gedminas
3

Es ist ein Computer; Sie können es programmieren. :-)

Etwas "anklickbar" zu machen bedeutet entweder, eine GUI-Anwendung zu programmieren oder irgendwie HTML zu verwenden. Der einfachste Weg, den ich mir vorstellen kann, wäre, eine HTML-Seite mit HREFs zu generieren und die Ausgabe beispielsweise an Lynx weiterzuleiten, wobei der Browser so konfiguriert wird, dass Emacs entsprechend geöffnet wird .

James K. Lowden
quelle