6 ms·
For me the big advantage of ripgrep is it defaults to searching recursively so I can just do "rg term". And the plugins support, which enables something like r
by ydant 4y ago
For me the big advantage of ripgrep is it defaults to searching recursively so I can just do "rg term".
And the plugins support, which enables something like ripgrep-all, which can then search PDFs, etc.
If I'm scripting, though, I try to stick to common denominator grep.
- heywoodlh 4y agoAh, that makes sense. I'm glad you brought that up because I didn't even notice that I'm just used to adding -R to my grep commands when I need recursive searching. I can totally see how that would be a small, but impactful difference.
- adrian_b 4y agoWhenever you normally use some programs with other options than their defaults, it is simpler to define aliases for those programs. There are many common programs that I never use with their standard default options (which are very bad, IMO), e.g. cp, mv, ln, rm, rsync, date and many others, so I always define aliases for them, which include those options that I want to use by default. So for grep, the recursive search should be included in the grep alias. There is no need for a new program in order to have this feature.
- mjochim 4y ago> Whenever you normally use some programs with other options than their defaults, it is simpler to define aliases for those programs. I don't buy into this. These aliases tend to come at the cost, or at least the risk, that your workflow breaks when you are at another computer or working on a shell on some server that doesn't have this alias. That's why I like additional aliases, like l for ls, but with your favorite options. But I dislike aliases that change default behavior - and often in an intransparent way.
- burntsushi 4y agoripgrep adds more than "recursive search by default." And it specifically adds things that you cannot easily put into an alias.
- jraph 4y agoThis, and also it ignores irrelevant files. It has sane defaults but you can tweak this with a .rgignore file, which is like .gitignore but for rg. By the way, it will use .gitignore files in a git directory. That means that by default, it will take a lot less time and won't ruin your terminal when lines of some generated files (especially minified ones that are all on one line) match your search. This is the main reason I use ripgrep.
- pletnes 4y agoThis. Also you can do stuff like «rg —python myvariable» to search python files only. Neat for multi-language directory trees. (Works with many other languages.)
- js2 4y ago> By the way, it will use .gitignore files in a git directory. If I'm in a repo, I'm using `git grep`. That makes `rg` a mostly redundant tool for me since it's optimized for searching source code. I can't really use it as a general purpose replacement for grep since if it doesn't find anything I'm left wondering whether what I'm searching is not really there or whether `rg` just didn't bother to check. Even with `--no-ignore --all`, I'm still not sure whether it searches everything. It's one of those tools that I find is too clever for my own good. So when `git grep` doesn't cover my use case, my fall back is `find | grep` which contains no magic and I know exactly what it's searching.
- heywoodlh 4y agoWhoa, I didn't even know about `git grep`. Sure enough, `man git-grep` has a bunch of relevant info! Thanks for sharing this. I feel like there are a billion features in git (like this) that I don't know about.
- nicoburns 4y agoIt’s handy if you want to search more than one repo at once. I believe you can do ‘rg -uuu’ as a shorthand to disable all ignores
- mkhnews 4y ago
- gnufied 4y agoI use ripgrep all the time but I sometimes don't trust the results and I have been bitten too many times by heuristics it automatically uses to detect binary files and skip searching into those. These days I run ripgrep with alias `rg --color always --no-mmap -a` but still I think its binary file detection is wonky. I might be missing some relevant option but out of box - IMO grep is slower but always does what is told (and hence more reliable).
- burntsushi 4y agoCan you give a specific example of where the binary file detection is wonky? It should be basically the same as what GNU grep does. It just looks for a NUL byte. If it exists, it's classified as binary data. Otherwise, text. GNU grep also does binary detection by default. You have to opt into -a/--text there too. So maybe GNU grep doesn't always do what it's told either. :-)