Enhancing efficiency with history


Modifiers edit a history entry, allowing it to be repurposed. Some modifiers simply remove part of the entry. For instance, h removes everything that comes after the modifier, so specifying -h home/jwl would remove /music/pogues from the entry /home/jwl/music/pogues. Conversely, using /music/pogues would delete /home/jwl/ from the same entry. Similarly, using r with .odt would omit the extension from a LibreOffice file, while e would leave only .odt. With p, though, the event would only display without being executed, which could be handy if you are unsure exactly which history entry you want or decide to check the syntax before running it. Still other modifiers use a sed-like replacement that can save typing. For example, if you were backing up a file called draft1.odt but typed darft for the name of both the source and target file, you could correct both misspellings at the same time with


to run the command correctly. Should you require the same correction again, !!:g& will reapply it.

Alternate Histories

If all these possibilities are not enough, there are at least two alternatives. Instead of using the history command's options, you could pipe through grep, using the structure

history | grep TEXT

which, if you are already familiar with grep, could save you the need to learn the intricacies of another command and avoid the need to guess the location of the correct entry, although you would have to copy and paste to run it (Figure 4).

Figure 4: Piping history through grep can be an efficient way to search the history entries.

A more comprehensive alternative might be McFly [2], a replacement named for the main character in the Back to the Future movies (Figure 5). Using an SQLite database, McFly takes context into consideration in its output, doing the HISTTIMEFORMAT variable several times better. Among other things, McFly's suggestions are influenced by how often you run a command, when you last ran the command, and whether you've previously selected the command from McFly. In addition, McFly lets you run the command in the same directory as before, consider the commands you've previously run before the command you are searching for, and tell whether the command failed last time, which probably means you would not want to run it again. However, McFly is not yet a complete replacement for history.

Figure 5: McFly is a history alternative that uses AI to select results.


The history command offers plenty of ways to enhance your work at the command line. The fact that a direct substitution has not arrived before now is a tribute to the efficiency and versatility of the history command.

The Author

Bruce Byfield is a computer journalist and a freelance writer and editor specializing in free and open source software. In addition to his writing projects, he also teaches live and e-learning courses. In his spare time, Bruce writes about Northwest Coast art (http://brucebyfield.wordpress.com). He is also co-founder of Prentice Pieces, a blog about writing and fantasy at https://prenticepieces.com/.

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy Linux Magazine

Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

  • Back to the Future

    McFly improves on the venerable history command with a customizable interface and contextualized results.

  • Effectively using Bash history

    You can do more with the Bash history command than just using the arrow keys. We show you how to use this command-line tool more efficiently.

  • McFly

    When it comes to working at the command line, using Bash history effectively can save you time. McFly extends the Bash history's features and helps you find past commands more quickly.

  • Making History

    In the history log, the Bash shell records all commands typed by the user. Mike Schilli extracts this data with Go for a statistical analysis of his typing behavior.

  • History Lesson

    For admins like Charly, who try to avoid typing at all costs, the shell offers an excellent opportunity to avoid wear on your fingertips in the form of built-in history.

comments powered by Disqus
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters

Support Our Work

Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.

Learn More