You need to use the history command to display or manipulate the history list on a Linux or Unix-like systems. This command displays the list of commands previously typed with line numbers, prefixing each modified entry with a *.
Tutorial details | |
---|---|
Difficulty | Easy (rss) |
Root privileges | No |
Requirements | bash/csh/zsh |
Time | 1m |
Display list of previously typed commands
Simply type the following command:
history history 10 history | less history | grep 'command-name-here'
Sample outputs:
Fig.01: Bash history command output
How do I reissue a long command without retyping it?
To reissue a command in bash/csh/tcsh/zsh shell, type ! the exclamation point followed by the number of the command you would like to run or repeat. For example, if you would like to reissue command ‘ssh root@v.b2’ from the above output i.e. command # 80, type:
!80
Scrolling through the command line history
You can also scroll through the command line history simply by using the [up] and [down] arrow keys too.
Searching the command line history
Press [CTRL-r] from the shell prompt to search backwards through history buffer or file for a command. After pressing [CTRL-r] just type first few command letter such as ssh:
(reverse-i-search)`ssh ': ssh -X vivek@nas01
To search all ssh related commands press [CTRL-r] again:
Gif.01: Bash/tcsh/zsh: Command search demo
To repeat last command just type !! at a shell prompt
Say you type a long command:
ssh -X -o UserKnownHostsFile=/dev/null -o CheckHostIP=no -o StrictHostKeyChecking=no -i /Users/veryv/.ssh/google_compute_engine -A -p 22 veryv@173.255.113.19 --
To repeat the same last command again, just type !!:
!!
Or you can also refer to the previous command using:
!-1
To repeat to the most recent command starting with word ‘ssh’ type:
!ssh
For more info see man pages – tcsh(1)
🐧 7 comments so far... add one ↓
Category | List of Unix and Linux commands |
---|---|
File Management | cat |
Firewall | Alpine Awall • CentOS 8 • OpenSUSE • RHEL 8 • Ubuntu 16.04 • Ubuntu 18.04 • Ubuntu 20.04 |
Network Utilities | dig • host • ip • nmap |
OpenVPN | CentOS 7 • CentOS 8 • Debian 10 • Debian 8/9 • Ubuntu 18.04 • Ubuntu 20.04 |
Package Manager | apk • apt |
Processes Management | bg • chroot • cron • disown • fg • jobs • killall • kill • pidof • pstree • pwdx • time |
Searching | grep • whereis • which |
User Information | groups • id • lastcomm • last • lid/libuser-lid • logname • members • users • whoami • who • w |
WireGuard VPN | Alpine • CentOS 8 • Debian 10 • Firewall • Ubuntu 20.04 |
Many thanks for sharing the information.
Note that previously used commands can be accessed in command entry or terminal windows across reboots.
Sometimes is is dangerous to just use the exclamation point with the first letter. It may pull up and execute a command you did not intend. To avoid this use the print option (‘:p’) after. For example to just print out the last command beginning with r, but not execute it you would enter the following:
Bash will print out the command and make it the final command in your history, for example:
Now you can press the up arrow and execute that command or edit it and then execute it by pressing the Enter key.
Good tip. I appreciate your feedback.
It is dangerous to use a printable character for anything other than self-insert.
Make a text file of the script, and drag and drop it to the terminal, and run it. No Idea how to do it though
I really like Ctrl-r. It is useful for accessing a command by part of the command in the middle also. You can keep adding letters to your search or doing Ctrl-r to cycle through what matches that that you already have input. When you are satisfied that it is a command you want to run – then hit enter. If it is almost the command that you want to run, but requires some more modification, then hit .
Ctrl-r can also be used on an existing line to go back to a character in that line. To go back to the closest space – Ctrl-r and
For more control within an existing line, use Ctrl-Alt-] to move backwards
For more control within an existing line, use Ctrl-] to move forwards
For these can be replaced by any character.