A Command Line Trick I Didn’t Know I Needed — Reverse Searching

This week I want to write about a trick I have been using in my terminal lately, reverse searching. I just learned about this, and I have been kicking myself for not learning about it sooner. Hopefully it will come in handy for you as much as it has for me if you haven’t seen this already!

First off, I was using bash as my shell for a long time, and just switched to zsh (and installed Oh My Zsh, it’s awesome!), let me tell you, I was living under a rock. I love it!

This reverse searching tip is the most useful command line tip I’ve been given lately, and will work for both bash or zsh as far as I understand!

Let’s say you have some crazy long Rails command that you used to create your models, migrations, controllers, etc. And you used rails g resource plus a bunch of other stuff:

ex. rails g resource color_form name email:text color_one:text color_two:text color_three:text color_four:text color_five:text percent_one:integer percent_two:integer percent_three:integer percent_four:integer percent_five:integer final_img

That’s a long command! But wait, maybe we screwed something up and now we want to do this over — but I used that command days ago! Oh no!

Reverse search to the rescue! On Mac (and I believe also on PC), ctrl + R will put us into this mode:

As soon as I begin typing, it starts showing me the most recent command which matches my search query. Let’s say I recently navigated all the way into a file which was 6 directories deep from my home directory. Instead of cding into each directory, or typing the long relative path out again, I can use reverse search!

If I was looking for this command:

cd Development/Code/side-projects/sub-directory/sub-sub-directory/sub-sub-sub-directory/

I might start by searching for a word in the last part of the path, in this case sub-sub-sub-directory. Depending on how many commands I have used since this one, I should probably be able to find it by the time I type the word sub:

There it is! That simple. The beauty is, it doesn’t matter how far back I did this command, if I search it correctly, I’ll always find it.

Now if I want to run this command immediately, I can just hit enter. If I wanted to exit the search, I can use either ctrl + C or ctrl + G, whatever works best for you.

However, if I want to finagle it a bit, I can hit escape and I can now do what I want with that command.

More to come on this article, stay tuned!

--

--

--

Full Stack Web Developer && Creative Thinker && Flatiron School Grad && Continuous Learner

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

Why is my Alexa Flash Briefing playing more than one episode at a time?

Sales Manager to Software Developer with Lambda School

Using AWS Systems Manager Parameter Store to Handle Credentials for Multiple Regions

Simulating Jakarta’s BRT Real-Time Bus Tracking Using Kafka and Docker

Meteor: good practices with API & Data

New Form Validation Way with Kotlin Flow — StateFlow

In-House Vs. Outsourced Software Development

Beating Ethernaut: level 1 Fallback

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Tyler J Funk

Tyler J Funk

Full Stack Web Developer && Creative Thinker && Flatiron School Grad && Continuous Learner

More from Medium

UML class diagrams

PyCharm : Features ,its Advantages and Disadvantages

Python Behind the Scenes (Part 1)

Handling Private Affair: A Guide to Secrets Management System