터미널 버퍼에서 텍스트 선택(강조 표시)을 시뮬레이션해야 합니다. 너무 오래 전이어서 모든 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 -