Wednesday, February 4, 2015

Bash: Reissue And Repeat A Long Command Without Retyping It on a Linux, OS X & Unix

I'm a new Ubuntu Linux user. In Linux, Apple OS X or Unix-like systems, how do I reissue or repeat a long command without retying it?

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 *.



The bash shell supports a history expansion feature that is similar to the history expansion in csh.

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
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
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 - bash(1)zsh(1)tcsh(1)

0 comments:

Post a Comment