터미널에서 클릭 가능한 링크 만들기


13

검색 결과를 편집기를 열기위한 링크 (예 : 하이퍼 링크)로 사용할 수 있도록 출력을 처리 / 변환 grep (또는 grep유사한 결과를 생성 하거나 파일에서 문자열 및 / 또는 패턴을 찾는 등의 방법)이 가능합니까? 결과 에서 를 클릭 하고 선택한 줄에서 편집기를 열고 싶습니다.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);

시스템에서 프로토콜을 등록하여 편집기를 여는 방법을 알고 있습니다. 예를 들어, sblm://*내 시스템 과 같은 모든 URL 은 Sublime Text로 열립니다. 내 질문은 guake 터미널에서 사용자 정의 링크를 만드는 방법입니다 (또는 지진에 의존하지 않고 기본 터미널 프로그램에서 작동합니다)?

참고 : 관련 (?) 질문, 파일 이름을 클릭 할 수있는 터미널 응용 프로그램이 있습니까? 는 구체적인 구현 / 솔루션 세부 사항에 대해 모호하며 파일에서 식별 된 줄로 직접 이동해야한다는 요구 사항을 명시 적으로 언급하지 않습니다.


답변:


4

최신 버전의 그놈 터미널은 이제 특정 이스케이프 시퀀스를 통해 사용자 정의 대상이있는 하이퍼 링크를 지원합니다. 시험

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

이것을 여는 것은 Stephen Kitt의 답변에서 설명한 것과 같은 방식으로 작동합니다. 설명한 문제를 해결하기 위해 sed 스크립트 (또는 고급 방법)를 사용하여 파일 이름을 하이퍼 링크로 변환 할 수 있습니다. 나를 위해 다음 작업을 수행합니다 (bash에서 하이퍼 링크 작업을 만드는 위의 방법을 가정)

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

(나는 숭고한 설치가 없지만 대부분 파일을 slbm으로 변경할 수 있습니다.)

참조 : https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda (이것은 터미널 에서 내 대답을 기반으로합니다 -하이퍼 링크 만들기 )


디렉토리 / 파일 이름에 공백이나 다른 재미있는 문자가있을 때 올바르게 작동 하는 bash 기능 에 대해서는 bash 기능에 대해서는 purpleidea.com/blog/2018/06/29/hyperlinks-in-gnome-terminal 을 참조하십시오 urlencode.
Marius Gedminas

3

컴퓨터입니다. 프로그래밍 할 수 있습니다. :-)

"클릭 할 수있는"것을 만드는 것은 GUI 응용 프로그램을 프로그래밍하거나 HTML을 사용하는 것을 의미합니다. 내가 생각할 수있는 가장 간단한 방법은 HREF의 HTML 페이지를 생성하고 출력을 lynx 로 파이프하여 emacs를 적절하게 열도록 브라우저를 구성하는 것 입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.