
In this blog post, I will share a few tips that will help you boost your productivity while working with a terminal.
macOS users - CTRL is still CTRL
An old friend of mine once told me …
“History is written by the victors.” (Winston Churchill)
I used to hit the UP_ARROW to find commands that were previously executed. And then, one of my colleagues told me “Use CTRL+R”. This is the most important shortcut, you can stop reading this blog-post, it’s totally enough to embrace only this one.
unfor19@~ $ python --version
Python 3.8.5
unfor19@~ $ yarn --version
1.19.1
unfor19@~ $ git --version
git version 2.28.0.windows.1
# Now I hit CTRL+R, and search for `p`
(reverse-i-search)`p': python --version
NOTE: Use history | grep "something" to view multiple lines. It’s not as cool as CTRL+R though, because you can’t directly execute the command, you gotta’ copy-paste it.
To keep the history clean from private keys that were used, one can simply add whitespace before the command that shouldn’t be saved in the history.
# Saved in history - Bad
TOKEN=myAwSom3c00lt0k3n
# Not saved in history - Good
TOKEN=myAwSom3c00lt0k3n
^ # whitespace
But what if we forget to do that? It’s possible to delete a specific line from the history
# Let's see my history ... OMG a token in line #5
unfor19@~ $ history
1 python --version
2 yarn --version
3 git --version
4 history
5 TOKEN=myAwSom3c00lt0k3n
6 history
# Let's delete line #5
unfor19@~ $ history -d 5
# Token is not in the history!
unfor19@~ $ history
1 python --version
2 yarn --version
3 git --version
4 history
5 history
6 history -d 5
7 history
So it worked, but if I open a new terminal window, I’ll still see the token, because -d is relevant for the active shell (terminal) only. To make the changes persistent, you need to use the -w flag, which stands for “write changes” (feels like a database).
# Apply changes to $HISTFILE
history -w
To clean up all history, without specifying a line number, you can use the -c flag, combined with the -w flag.
unfor19@~ $ history
1 python --version
2 yarn --version
3 git --version
4 history
5 history
6 history -d 5
7 history
unfor19@~ $ history -cw
unfor19@~ $ history
1 history
# All clean!
# You can also split it into two commands
# history -c # clean
# history -w # write (apply) changes to $HISTFILE
I know how to search CTRL+R and clean history -wc or history -d 5, but what If I want to increase the size of my history? I feel that the default 1000 lines is not enough, and I’d like to store more commands in my history.
Add to your ~/.SHELLrc, such as ~/.bashrc, ~/.zshrc, and so on.
HISTSIZE=3000 # per session (terminal window)
HISTFILESIZE=3000 # max file size of $HISTFILE
NOTE: To check the path of your history file echo its location with echo "$HISTFILE"
![]()
I remember this one with CTRL+A (A=start of Abc) and CTRL+E (E=end)
# ^cursor - after the pointed character
curl -sL https://catfact.ninja/fact | jq -r .fact
# ^cursor
# Hit CTRL+A
curl -sL https://catfact.ninja/fact | jq -r .fact
# cursor is before the first character
# Hit CTRL+E
curl -sL https://catfact.ninja/fact | jq -r .fact
# ^cursor
Moving right and left with RIGHT_ARROW and LEFT_ARROW is very annoying, especially if you want to jump to a specific word.
# ^cursor - after the pointed character
curl -sL https://catfact.ninja/fact | jq -r .fact
# ^cursor
# Hold ALT and hit LEFT_ARROW once
# ^cursor
# Hold ALT and hit LEFT_ARROW multiple times
# The cursor will jump between words to the left
# Same goes to the right by holding ALT and hitting RIGHT_ARROW
Without further ado…
# ^cursor - after the pointed character
curl -sL https://catfact.ninja/fact | jq -r .fact
# ^cursor
# Hold ALT and hit BACKSPACE
curl -sL https://catfact.ninja/ | jq -r .fact
# ^cursor

It’s not easy to remember multiple shortcuts all at once, and sometimes it’s intimidating. Just make sure you memorize CTRL+R(search history), which is definitely a game changer.