ripgrep은 지난 수년간 정말 많은 시간을 절약해준 툴임, 새 시스템을 시작할 때마다 가장 먼저 설치하는 필수 도구임, 특히 오래된 코드베이스를 탐색할 때 없어서는 안 될 존재임, 한 가지 아쉬운 점은 -F(리터럴 취급) 옵션을 쓸 때도 몇몇 문자가 여전히 이스케이프가 필요한 특수문자로 처리되는 경우가 있다는 점임, 정확히 어떤 문자인지는 기억이 안 남, 그래도 ripgrep이 계속 업데이트되는 걸 볼 때마다 기쁨
만약 어떤 문자에서 문제가 있었는지 예시를 알려주면 구체적으로 설명해줄 수 있음, -F/--fixed-strings는 패턴에서 100% 정규 표현식 기능을 끄고 리터럴로만 처리함, 이스케이프가 필요하다면 그건 아마 쉘에서 요구하는 것이 원인일 수 있음
rg는 마치 마법처럼 느껴지는 툴임, 실제로는 탁월한 엔지니어링과 꾸준한 개선, 그리고 우리 모두가 매일 사용하는 놀라운 하드웨어 성능을 십분 활용한 결과임, 또한 lsp 같은 표준을 따로 만들 필요 없이 개발자들이 더 빠르게 코드 탐색과 이해를 할 수 있도록 가능성을 열어준 혁신임
smithing이 이 맥락에서 무슨 뜻인지 정말 궁금함
ripgrep 코드베이스는 "음료를 준비하고 가장 편한 의자에 앉아 고품질 소프트웨어를 탐독하는" 최고의 예시임, 이리저리 코드 구석구석을 클릭하며 감탄하게 됨
fd처럼 rg도 진짜 사용이 즐거운 커맨드라인 툴임, 이런 새로운 명령어 기반 툴들을 좋아함
ripgrep과 fd의 저자들이 Astral에서 근무한다는 사실을 최근에 알게 됨, 그래서 Astral 소프트웨어가 이렇게 좋구나 싶음
두 툴 모두 별다른 옵션 없이도 기본값이 99% 내가 원하는 대로 동작함, 엄청난 시간 절약임, 예를 들어 rg <string> 또는 fd <string> 하나만 입력해도 충분함
개인적으로 추가됐으면 하는 기능은 "확장자" 플래그임, -g처럼 동작하지만 입력 인자를 확장자로 처리하는 기능임 (예시: rg -e c,h처럼), 대부분 glob 패턴을 쓸 때 확장자 매칭이 목적이기 때문임
-t/--type 플래그를 본 적 있는지 묻고 싶음, 예시처럼 -tc로 쓸 수 있음, ripgrep에 없는 확장자라면 직접 type을 정의할 수도 있음
ripgrep은 내가 rust에 관심을 갖기 시작한 주요 계기임, 너무 완성도 높게 동작해서 rust로 작성됐다는 사실에 더 궁금증이 생겼음, 몇 년이 지난 지금도 매일 rg를 사용하고 있음
nibbles가 내가 qbasic에 흥미를 갖게 된 주요 이유였음, 완성도 높아서 qbasic으로 작성된 점에 흥미를 느꼈고, 덕분에 nibbles를 매일 사용하게 되었음
최근에는 --replace 옵션을 발견했고 꽤 인상적이었음, --type과 함께 사용하면서 이전에 이런 멋진 기능들이 있다는 것을 모르고 있었다는 점이 아쉬웠음, 앞으로는 릴리즈 노트를 꼼꼼히 읽으면서 새로운 기능에 더 민감하게 대응할 생각임, jj와의 연동 기능 향상도 반가움
훌륭한 툴이면서도 사용성이 매우 쉬움, 처음에는 Linux에서 쓰기 시작했는데 지금은 Windows에서도 쓰고 있음, 이 도구 덕분에 이제는 wildcard 대신 정규 표현식을 바로 검색에 활용하게 됨
기본 grep보다 더 좋고, rg --files명령도 유용함
이번 주에 bash 함수로 git이 추적하는 파일에서만 ripgrep을 실행하는 함수를 만들었음
바이너리 파일이나 dot 파일이 많은 디렉토리에서 훨씬 빠르게 검색할 수 있음, dot 파일을 검색하려면 -uu 옵션이 필요하지만, 이 옵션은 바이너리 파일까지 검색하게 됨, 파일 수가 수백 개일 때는 git ls-files 자체가 느려짐
혹시 그렇게 했을 때 속도가 더 빨라진 구체적인 예시가 있을지 궁금함, 일반적으로 ripgrep은 이미 gitignore 규칙을 존중해서 git ls-files와 비슷하게 동작함, 참고로 -uu 옵션은 ripgrep이 gitignore와 hidden 파일을 무시하라는 뜻인데, 그래도 바이너리 파일은 건너뜀, 바이너리 파일까지 포함하려면 -uuu가 필요함, 함수에서 제일 큰 문제는 리눅스 커널 리포에 썼을 때 argument list가 너무 길다는 에러가 뜬다는 점임, 그래서 xargs로 바꿔봄
$ git ls-files -z | time xargs -0 rg APM_RESUME
...
real 0.638
user 0.741
sys 1.441
maxmem 29 MB
faults 0
$ time rg APM_RESUME
...
real 0.097
user 0.399
sys 0.588
maxmem 29 MB
faults 0
이런 상황에서 git ls-files -z | xargs -0 rg ...가 그냥 rg ...보다 더 빠른 예시가 있으면 공유를 부탁함
이 글을 쓰고 나서 매뉴얼을 다시 읽어보니 -uu 대신 -. 플래그(숨김 파일 검색 전용)를 쓸 수 있다는 걸 알게 됨, git이 추적하는 숨김 파일을 검색할 수 있으면 좋겠지만, 파일 목록을 쿼리할 때 생기는 오버헤드가 러스트로 짜도 무시 못할 정도임
내가 뭔가 놓친 건지 모르겠지만, ripgrep은 원래 git에서 추적되지 않는 파일을 기본적으로 무시하는 것 아님?
이 방식이 git grep보다 빠른지 궁금함
매일 업무에서 ripgrep을 사용함, 커맨드라인에서도 vscode에서 검색할 때도 항상 씀, burntsushi에게 고마움을 전함
Hacker News 의견
ripgrep은 지난 수년간 정말 많은 시간을 절약해준 툴임, 새 시스템을 시작할 때마다 가장 먼저 설치하는 필수 도구임, 특히 오래된 코드베이스를 탐색할 때 없어서는 안 될 존재임, 한 가지 아쉬운 점은 -F(리터럴 취급) 옵션을 쓸 때도 몇몇 문자가 여전히 이스케이프가 필요한 특수문자로 처리되는 경우가 있다는 점임, 정확히 어떤 문자인지는 기억이 안 남, 그래도 ripgrep이 계속 업데이트되는 걸 볼 때마다 기쁨
-F/--fixed-strings는 패턴에서 100% 정규 표현식 기능을 끄고 리터럴로만 처리함, 이스케이프가 필요하다면 그건 아마 쉘에서 요구하는 것이 원인일 수 있음rg는 마치 마법처럼 느껴지는 툴임, 실제로는 탁월한 엔지니어링과 꾸준한 개선, 그리고 우리 모두가 매일 사용하는 놀라운 하드웨어 성능을 십분 활용한 결과임, 또한 lsp 같은 표준을 따로 만들 필요 없이 개발자들이 더 빠르게 코드 탐색과 이해를 할 수 있도록 가능성을 열어준 혁신임
ripgrep 코드베이스는 "음료를 준비하고 가장 편한 의자에 앉아 고품질 소프트웨어를 탐독하는" 최고의 예시임, 이리저리 코드 구석구석을 클릭하며 감탄하게 됨
fd처럼 rg도 진짜 사용이 즐거운 커맨드라인 툴임, 이런 새로운 명령어 기반 툴들을 좋아함
개인적으로 추가됐으면 하는 기능은 "확장자" 플래그임, -g처럼 동작하지만 입력 인자를 확장자로 처리하는 기능임 (예시:
rg -e c,h처럼), 대부분 glob 패턴을 쓸 때 확장자 매칭이 목적이기 때문임-t/--type플래그를 본 적 있는지 묻고 싶음, 예시처럼-tc로 쓸 수 있음, ripgrep에 없는 확장자라면 직접 type을 정의할 수도 있음ripgrep은 내가 rust에 관심을 갖기 시작한 주요 계기임, 너무 완성도 높게 동작해서 rust로 작성됐다는 사실에 더 궁금증이 생겼음, 몇 년이 지난 지금도 매일
rg를 사용하고 있음최근에는
--replace옵션을 발견했고 꽤 인상적이었음,--type과 함께 사용하면서 이전에 이런 멋진 기능들이 있다는 것을 모르고 있었다는 점이 아쉬웠음, 앞으로는 릴리즈 노트를 꼼꼼히 읽으면서 새로운 기능에 더 민감하게 대응할 생각임, jj와의 연동 기능 향상도 반가움훌륭한 툴이면서도 사용성이 매우 쉬움, 처음에는 Linux에서 쓰기 시작했는데 지금은 Windows에서도 쓰고 있음, 이 도구 덕분에 이제는 wildcard 대신 정규 표현식을 바로 검색에 활용하게 됨
rg --files명령도 유용함이번 주에 bash 함수로 git이 추적하는 파일에서만 ripgrep을 실행하는 함수를 만들었음
바이너리 파일이나 dot 파일이 많은 디렉토리에서 훨씬 빠르게 검색할 수 있음, dot 파일을 검색하려면 -uu 옵션이 필요하지만, 이 옵션은 바이너리 파일까지 검색하게 됨, 파일 수가 수백 개일 때는 git ls-files 자체가 느려짐
git ls-files -z | xargs -0 rg ...가 그냥rg ...보다 더 빠른 예시가 있으면 공유를 부탁함git grep보다 빠른지 궁금함매일 업무에서 ripgrep을 사용함, 커맨드라인에서도 vscode에서 검색할 때도 항상 씀, burntsushi에게 고마움을 전함