Cut PHP Code Review Time & Bugs into Half with CodeRabbit

Command Line Search Tools for Programmers

Published on by

Command Line Search Tools for Programmers image

Over the last several years, I’ve improved my command line searches through a few tools geared towards programmers. These tools help developers find phrases and patterns in text files in an unfamiliar codebase without the complexity of grep.

Searching for a unique string or keyword is an excellent way to find out where functionality is located without jumping into a text editor. Another use I have is finding previous commands that you ran via history and using a tool like grep to filter down lines that match a given pattern.

The following is a list of five command line search tools that will help you as a developer if you are interested in using the command line more for finding code, text, and files quickly without relying on an editor or an IDE.

Some of the tools are ‘nix only, but I’ve listed a few that are cross-platform and ridiculously fast!

Grep

The nice benefit of using grep is that it’s available on pretty much any ‘nix distribution you might use. Its utility is powerful in many different contexts, and I’ll show you a few of my favorite:

If you want to find a phrase in only PHP files and output the line number:

$ grep -RHn --include \*.php Controller .

Let’s say you typed a command into the console a few days ago but you only recall part of the command. You can pipe (|) the history command to search with grep:

$ history | grep "php artisan"

You can pipe all of CLI tools listed in this article, but I find I just need a simple grep which filtering history. A nice side-effect is that the filtered results will give you a number at the beginning and you can use it to re-run the command:

$ history | grep 'php artisan'
284 php artisan route:list
 
$ !284
$ php artisan route:list

Ack

Ack is “a tool like grep, optimized for programmers.” It searches recursively by default (i.e., your project) while ignoring VCS directories like .git and has convenient tools that help you explore code with fewer keystrokes.

Taking the same grep example, here’s how we would search for “Controller” in only PHP files:

# Ack
$ ack Controller --php
 
# Here's the grep example
$ grep -RHn --include \*.php Controller .

Let’s say that you wanted to search all other types of files except PHP. Each type has a “no” flag:

$ ack Controller --nophp

You can extend ack through an ~/.ackrc file to add custom types like --php. Let’s say that you commonly search in only blade files with something like this:

$ ack @auth --blade
Unknown option: blade
ack: Invalid option on command line

To register the “blade” type, you can add the following to an ~/.ackrc file and then search above will only look in files that end in blade.php:

--type-set=blade:match:.blade.php$

Here are a few other options you might want as a Laravel developer in the ~/.ackrc file:

# Always use color
--color
 
# Ignore PhpStorm and NPM
--ignore-dir=.idea/
--ignore-dir=node_modules/
 
# Add to existing types
--type-add=ruby:ext:haml,rake,rsel
 
# Add new types
--type-set=smarty:ext:tpl
--type-set=cakeview:ext:ctp,thtml
--type-set=markdown:ext:md,markdown
--type-set=json:ext:json
--type-set=blade:match:.blade.php$

Ack looks in various locations for an .ackrc file, but if you want to run ack without any .ackrc file, use the --noenv flag.

You can verify your custom types by running ack --help-types. Ack has a ton of documentation and probably does things I haven’t discovered yet. Check man ack for more information or check ack manual online.

The Silver Searcher

The Silver Searcher is another grep replacement that is similar to ack, but touts faster performance. It ignores files found in a project’s .gitignore file.

You can install Silver Searcher with Homebrew on OS X:

brew install the_silver_searcher

You run The Silver Searcher with the ag command:

$ ag Controller --php

I won’t cover ag in a ton of detail, but if I want to search a lot of files I sometimes reach for ag.

Sift

Sift is a grep alternative built with Golang which means that it’s widely available on Linux, Windows, OS X, and others. It’s ridiculously fast, and it has some cool use-cases that replace grep + awk combinations to extract data.

I suggest that you check out the samples to learn about the powerful features in sift.

Using our basic PHP search we’ve used for the other tools, here’s how you’d find “Controller” in PHP files:

# Only PHP
sift --ext php Controller
 
# Exclude PHP
sift --exclude-ext php Controller

RipGrep

RipGrep aligns itself as similar to The Silver Searcher, but with “the raw speed of GNU grep,” and it works on Mac, Linux, and Windows. The readme claims that RipGrep is generally faster than anything else, touting Rust’s regular expression engine, and honors the .gitignore file like The Silver Searcher.

Here’s how you would search PHP files for “Controller” with RipGrep:

rg --type=php Controller

What’s Next?

Ack is my trusty search tool of choice and I think you will get a lot of value in using it as a grep replacement. I would highly recommend learning how to use ack first, but these tools all have unique features that make them valuable in different ways.

If you need to search large amounts of files (I am looking at you recursive node_modules/ folder) then go for The Silver Searcher, Sift, or RipGrep. In large projects ack is still a decently performant tool but you will notice speed improvements in the other tools.

Paul Redmond photo

Staff writer at Laravel News. Full stack web developer and author.

Filed in:
Cube

Laravel Newsletter

Join 40k+ other developers and never miss out on new tips, tutorials, and more.

image
Curotec

Curotec helps software teams hire the best Laravel developers in Latin America. Click for rates and to learn more about how it works.

Visit Curotec
Curotec logo

Curotec

World class Laravel experts with GenAI dev skills. LATAM-based, embedded engineers that ship fast, communicate clearly, and elevate your product. No bloat, no BS.

Curotec
Bacancy logo

Bacancy

Supercharge your project with a seasoned Laravel developer with 4-6 years of experience for just $3200/month. Get 160 hours of dedicated expertise & a risk-free 15-day trial. Schedule a call now!

Bacancy
Tinkerwell logo

Tinkerwell

The must-have code runner for Laravel developers. Tinker with AI, autocompletion and instant feedback on local and production environments.

Tinkerwell
Cut PHP Code Review Time & Bugs into Half with CodeRabbit logo

Cut PHP Code Review Time & Bugs into Half with CodeRabbit

CodeRabbit is an AI-powered code review tool that specializes in PHP and Laravel, running PHPStan and offering automated PR analysis, security checks, and custom review features while remaining free for open-source projects.

Cut PHP Code Review Time & Bugs into Half with CodeRabbit
Get expert guidance in a few days with a Laravel code review logo

Get expert guidance in a few days with a Laravel code review

Expert code review! Get clear, practical feedback from two Laravel devs with 10+ years of experience helping teams build better apps.

Get expert guidance in a few days with a Laravel code review
Kirschbaum logo

Kirschbaum

Providing innovation and stability to ensure your web application succeeds.

Kirschbaum
Shift logo

Shift

Running an old Laravel version? Instant, automated Laravel upgrades and code modernization to keep your applications fresh.

Shift
Harpoon: Next generation time tracking and invoicing logo

Harpoon: Next generation time tracking and invoicing

The next generation time-tracking and billing software that helps your agency plan and forecast a profitable future.

Harpoon: Next generation time tracking and invoicing
Lucky Media logo

Lucky Media

Get Lucky Now - the ideal choice for Laravel Development, with over a decade of experience!

Lucky Media
Lunar: Laravel E-Commerce logo

Lunar: Laravel E-Commerce

E-Commerce for Laravel. An open-source package that brings the power of modern headless e-commerce functionality to Laravel.

Lunar: Laravel E-Commerce
SaaSykit: Laravel SaaS Starter Kit logo

SaaSykit: Laravel SaaS Starter Kit

SaaSykit is a Multi-tenant Laravel SaaS Starter Kit that comes with all features required to run a modern SaaS. Payments, Beautiful Checkout, Admin Panel, User dashboard, Auth, Ready Components, Stats, Blog, Docs and more.

SaaSykit: Laravel SaaS Starter Kit

The latest

View all →
Laravel 12.44 Adds HTTP Client afterResponse() Callbacks image

Laravel 12.44 Adds HTTP Client afterResponse() Callbacks

Read article
Handle Nested Data Structures in PHP with the Data Block Package image

Handle Nested Data Structures in PHP with the Data Block Package

Read article
Detect and Clean Up Unchanged Vendor Files with Laravel Vendor Cleanup image

Detect and Clean Up Unchanged Vendor Files with Laravel Vendor Cleanup

Read article
Seamless PropelAuth Integration in Laravel with Earhart image

Seamless PropelAuth Integration in Laravel with Earhart

Read article
Laravel API Route image

Laravel API Route

Read article
Laravel News 2025 Recap image

Laravel News 2025 Recap

Read article