
터미널 버퍼에 있는 텍스트 선택(강조 표시)을 시뮬레이션해야 합니다. stdout이 오래되었으므로 모든 grep/awk/sed/redirection 항목은 AFAIK와 관련이 없습니다. 또한 stdout 형식을 지정하는 동안 강조 표시되는 것을 원하지 않습니다. 강조 표시되지 않은 상태로 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를 흰색 배경(강조 표시)이 있는 검정색 텍스트로 변환하고 나머지 텍스트는 검정색 배경에 흰색입니다. 문제는 실제로 버퍼를 편집하고 이와 같이 텍스트 스타일을 변경할 수 없다는 것입니다.
화면을 대화식으로 사용하여 "b.txt"를 찾을 수 있지만 (주요 목표) 강조 표시되지 않으며 어쨌든 화면 명령을 스크립트로 작성할 수 있는지 여부는 알 수 없습니다. 그래서 화면을 포기했어요. 스크립트 명령은 stdout을 파일로 덤프하지만 파일을 검색하고 싶지 않습니다. 터미널 버퍼를 검색하고 추가 표준 출력 없이 화면에 결과를 강조 표시해야 합니다. 내가 원하는 것은 이미 나왔으니 강조만 하면 된다.
나는 ncurses가 좋은 방법이라고 생각하지만, 나는 그것으로 코딩한 적이 없고 복잡해 보입니다. 그래서 본격적으로 시작하기 전에 누군가 이 작업을 수행하는 다른 방법을 생각하고 ncurses가 내가 원하는 작업을 수행할 수 있는지 검증할 수 있는지 묻고 싶습니다.
답변1
짧은: 아니, 그럴 수 없어
이상: 그렇게 할 수 없는 이유는 일반적으로 터미널에서 프로그램이 텍스트를 복사하는 것을 허용하지 않기 때문입니다.~에서그들의 화면. GUI 응용 프로그램이 터미널 화면에서 텍스트를 선택하도록 하는 우회적인 경로를 사용하는 것이 가능합니다. 그런 다음 텍스트가 무엇인지 안다면~이다, 그리고어디즉, 원칙적으로 터미널에서 명령을 실행하여 어떤 색상을 사용하든 화면의 해당 부분을 다시 칠하도록 지시할 수 있습니다. 그러나 이는 단지 가설일 뿐입니다(누군가 최근에 이 작업을 수행하는 프로그램을 작성하지 않은 경우).
그런데 텍스트가 보이는 화면에서 스크롤되면 터미널도 이를 수정하지 않습니다.
답변2
나는 vim
.
당신의 특별한 경우에는
vim .
그러면 vim
디렉토리에 있는 모든 파일이 포함된 창이 표시됩니다. 로 검색하고 /
, 를 눌러 파일을 열 수 있습니다 Enter
.
검색 강조표시가 활성화되어 있는지 확인하세요.
:set hlsearch
다른 명령의 경우 이것으로 충분할 수 있습니다.
echo "one\ntwo\nthree" | vim -