리눅스에서 텍스트 검색할 때 가장 많이 쓰는 게 grep이지만 여러 파일에 매치되는 키워드로 검색을 하고 해당 내용을 찾아 편집을 하다 보면 불편한 점이 한 두개가 아닙니다. 강력한 만큼 반복해서 타이핑해야 되는 옵션이나 검색 결과에 접근하는 부분이 불편해서인데 cgvg란 펄 기반 프로그램을 쓰면 좀더 편하게 사용할 수 있습니다.
데비안 계열에서는 패키지로 제공이 됩니다.
grep으로 'Logout'이란 문자열을 grep -rn 'Logout' . 정도의 옵션을 입력해야 재귀적으로(-r) 줄번호 표시해서(-n) 현재 디렉토리에서 시작하는(.) 옵션을 덕지덕지 붙여야 됩니다. cgvg는 다음과 같이 간단하게 할 수 있습니다.
게다가 grep으로 찾았을 때 위 그림에서 두번째 파일을 찾아가야 하는 경우 vim global/common-links.html.tmpl +67 의 명령을 일일이 쳐주거나 터미널이면 마우스로 긁어붙이는 수고를 더해야 하지만 cgvg는 해당 줄 맨 앞에 있는 숫자만 주목해주면 됩니다.
그러면 일일이 타이핑하지 않고도 vim이 실행되어 해당 줄에 커서가 위치합니다.
다 좋은데 단점이 있습니다. 자동으로 찾는 확장자가 제한이 있습니다. 기본적으로 Make.*, *.c, *.h, *.s, *.cc *.pl, *.pm, *.java *.php, *.*sh, *.idl 만 찾습니다. 이 외에 확장자는 cg '패턴' '*.html' 같은 형태로 직접 확장자를 지정해야 합니다.
이를 수정하는 방법은 두 가지가 있습니다.
하나는 /usr/share/cgvg/cgvgrc-example 파일을 홈 디렉토리의 .cgvgrc로 복사해서 SEARCH= 항목의 주석을 해제하고 파이프 문자('|')로 구분되는 확장자를 추가해주면 됩니다.
이것은 해당 파일을 소유한 사용자에게만 적용됩니다. 하지만 이 파일의 주석만 잘 읽어도 직접 설정할 수 있게 쉽고 명료하고 편집기(EDITOR)를 vim이 아닌 선호하는 것으로 바꿀 수도 있습니다. 색깔(COLOR)이나 출력을 화면 단위로 멈추게 하는 프로그램(PAGER, 예를 들면 more 나 less)까지 지정할 수 있습니다.
또 다른 방법은 /usr/share/cgvg/cgvg-common.pl 파일에서 $SEARCH= 항목에다 추가해주면 됩니다. 이 방법은 계정 상관없이 모두 적용되지만 프로그램 코드를 직접 고치기 때문에 Perl 언어에 대한 지식이 없다면 프로그램이 꼬이거나 실행되지 않을 수도 있습니다. 이 파일을 직접 수정할 때에는 원본 파일을 꼭 따로 보관하고 수정하는게 안전합니다.
※cgvg를 수동으로 사용하려면 먼저 perl이 설치되어 있어야 하고 cgvg가 설치된 곳의 /usr/bin/cg, /usr/bin/vg, /usr/share/cgvg/cgvg-common.pl, /usr/share/cgvg/cgvgrc-example 파일을 가져다가 사용할 곳의 동일한 경로에 넣어주면 됩니다(redhat/centos 계열 기준)
파일을 일일이 복사해도 되고 다음 명령으로 압축 파일을 만들어 한번에 묶고 한번에 풀면 조금 더 편리하게 사용할 수 있습니다.
복사하기 전에 /usr/bin/cg 와 /usr/bin/vg 파일을 텍스트 편집기로 직접 열어서
위와 같은 내용으로 시작하는 텍스트 파일인지 확인합니다. 이진 파일로 뭔가 깨진 내용이 보인다면 cg나 vg가 비정상적으로 덮어씌워진 경우입니다. 이런 경우 cg 및 vg를 새로 구해야 합니다.(원본 내용이 지워졌으므로...)
이럴 때를 대비해서 파일을 링크합니다.
압축하기
압축해제
2017.06.22 추가 내용
CentOS 7.3 을 설치할 일이 있어서 위와 같은 작업으로 실행을 시도했는데 다음과 같은 오류가 발생합니다.
펄 버전을 확인해봤습니다.
동작하는 쪽
CentOS 7.3 쪽
펄 버전 v.5.12 부터 비사용 권장 대상(deprecated)이 되었습니다.(참고). v5.14 부터는 아예 제거되었네요.(참고)
그래서 구 버전의 find.pl도 필요합니다. 특정 경로에 저장하시고 cg 안의 require "find.pl" 쪽을 require "실제경로/find.pl" 형태로 바꾸면 동작합니다.
아래 파일은 v5.8.8 버전에 포함된 find.pl 파일입니다. FindBin.pm 파일은 혹시나 해서 첨부합니다.
(fedora v5.5 의 /usr/lib/perl5/5.8.8/ 경로에서 추출했습니다.)
참고 글
cgvg man page
cgvg configuration file /usr/share/cgvg/cgvgrc-example
'IT' 카테고리의 다른 글
IPv6 주소를 웹 브라우저에서 사용하기 (0) | 2014.02.06 |
---|---|
syntaxhighlighter 적용되는 태그 바꾸기 (0) | 2014.01.18 |
gcc: error trying to exec 'cc1plus' (0) | 2013.12.31 |
임시로 IP 주소 추가하기 - Debian Wheezy 7.3 (0) | 2013.12.31 |
C++ 참조(reference) 변수 연습중 (0) | 2013.12.27 |