터미널 버퍼에서 텍스트를 검색하고 강조 표시하는 Bash 스크립트 명령

터미널 버퍼에서 텍스트를 검색하고 강조 표시하는 Bash 스크립트 명령

터미널 버퍼에서 텍스트 선택(강조 표시)을 시뮬레이션해야 합니다. 너무 오래 전이어서 모든 grep/awk/sed/redirect 항목이 관련이 없습니다. 또한 표준 출력 포맷 중에 강조 표시되는 것을 원하지 않습니다. 강조 표시되지 않은 상태로 stdout으로 이동한 다음 강조 표시해야 합니다. 아날로그 선택.

이 장면이군요...

Bash 스크립트는 "ls -1"을 호출하고 다음을 stdout으로 출력한 다음 터미널 버퍼로 출력합니까?

$ ls -1
a.txt
b.txt
c.txt

이제 "b.txt"를 찾아서 강조 표시하기 위해 Bash 스크립트에 넣을 수 있는 명령이 필요합니다.

좋다:

$ termsearch b.txt
a.txt
[b.txt]
c.txt

"termsearch"가 구성된 명령인 경우 b.txt를 흰색 배경(강조 표시)에 검정색 텍스트로 변환하고 나머지 텍스트는 검정색 배경에 흰색으로 변환하는 데 필요하다고 생각합니다. 문제는 실제로 버퍼를 편집하고 이렇게 텍스트 스타일을 변경할 수 없다는 것이 문제인 것 같습니다.

screen을 대화식으로 사용하여 "b.txt"를 찾을 수 있지만 강조 표시되지 않았으며(주요 목표) screen 명령을 스크립팅하는 것이 가능한지 모르겠습니다. 그래서 화면을 포기했어요. 스크립트 명령은 표준 출력을 파일로 덤프하지만 파일을 검색하고 싶지 않습니다. 터미널 버퍼를 검색하고 더 이상 stdout 없이 화면에 결과를 강조 표시해야 합니다. 내가 원하는 것은 이미 나왔으니 강조만 하면 된다.

나는 ncurses가 좋은 방법이라고 생각하지만, 나는 그것으로 코딩한 적이 없고 복잡해 보입니다. 그래서 더 깊이 파고들기 전에 누군가 이 작업을 수행하는 다른 방법을 알아낼 수 있는지 물어보고 ncurses가 내가 원하는 작업을 수행할 수 있는지 확인하고 싶었습니다.

답변1

짧은: 아니요, 그럴 수 없습니다.

더 길다: 이렇게 할 수 없는 이유는 터미널이 일반적으로 프로그램이 텍스트를 복사하는 것을 허용하지 않기 때문입니다.~에서그들의 화면. GUI 응용 프로그램이 터미널 화면에서 텍스트를 선택하도록 하고 그 텍스트가 무엇인지 알 수 있는 우회 방법이 있습니다., 그리고어디예, 원칙적으로 터미널에서 원하는 색상을 사용하여 화면의 해당 부분을 다시 그리라는 명령을 실행할 수 있습니다. 그러나 그것은 단지 가설일 뿐입니다(누군가 최근에 이를 수행하는 프로그램을 작성하지 않은 한).

그런데 터미널은 보이는 화면에서 스크롤된 후에는 텍스트를 수정하지 않습니다.

답변2

나는 그것을 사용할 것이다 vim.

귀하의 구체적인 경우에는

vim .

그러면 vim디렉토리에 있는 모든 파일이 포함된 창이 표시됩니다. 를 사용하여 검색 /한 다음 을 눌러 파일을 열 수 있습니다 Enter.

검색 강조 표시가 활성화되어 있는지 확인하세요.

:set hlsearch

다른 명령의 경우 다음과 같이 충분할 수 있습니다.

echo "one\ntwo\nthree" | vim -

관련 정보