This is a post on improving your productivity when you are working with BASH shell/terminal. BASH shell is having many inbuilt capabilities such as history, command chaining and BASH shortcut. In this post we will see what are BASH shortcuts and their usage.
Frequently used shortcut keys
Ctrl+a – Bring back the courser to start of the bash prompt
Ctrl+c – Cancel the command before executing it
Ctrl+d – Logout from the Shell
Ctrl+e – Move the courser to end of the command
Ctrl+l – Clear the screen
Ctrl+r – Search the history reverse order
Ctrl+p – go to the previous command in history
Ctrl+n – Go to next command in history
Ctrl+s – Suspend terminal output(Useful for long out commands )
Ctrl+z – suspend the command/send command running to background
Less frequently used shortcut keys
Alt+. – To paste last used word from the previous command
Ctrl + b – move backward one character
Alt + c – capitalize to end of word starting at cursor
Alt + d – delete to end of word starting at cursor
Ctrl + f – move forward one character
Ctrl + h – delete character before the cursor
Ctrl + k – delete all characters from cursor to the end of the command line
Alt + l – make lowercase from cursor to end of word
Ctrl + q – contunue the output after pressing ctrl+s
Ctrl + s – stops the output to the screen (for long running verbose command)
Alt + u – make uppercase from cursor to end of word
Ctrl + u – delete all characters from cursor to the start of the command line
Ctrl + w – delete from cursor to start of word, for each press this will delete one word at a time
Ctrl + y – paste the word(s) which are cut by using ctrl+k or u or w
Ctrl + xx – move to and fro from cursor to start and vice-versa.
When we are at prompt we can press press TAB key to auto-complete commands, directories, removing files/directories etc. We will see these as examples below for better understanding.
Example1: Execute lsdiff command to see if any files are modified by using auto complete without executing entire command.
Below commands are displayed to see which commands starts with ls
ls lsb_release lshw lsof lspgpot
lsattr lscpu lsinitramfs lspci lss16toppm
lsblk lsdiff lsmod lspcmcia lsusb
Now if you type d then press <tab> it will complete the lsdiff command as shown below because there is no other command which start with lsd name.
Example2: Directory structure autocompletion. Suppose I want to open smb.conf which is located in /etc/samba folder we can open this by just typing /et<tab>/sa<tab>/sm<tab> to open /etc/samba/smb.conf file.
Example3: Bash support wildcards. Delete all the files which are .sh file extension by using *.
rm -rf *.sh
Example4: I want to list all the files which starts with file and ends with .txt and having one character in between them.
ls -l file?.txt
This command will list all the files such as file1.txt, filea.txt, filez.txt etc.
Example5: List all the files which ends with a or b or c and start with file.
ls -l file[abc]
This will list filea, fileb and filec
Example6: List all the files which end with a to z, how can I do that?
ls -l file[a-z]
lists the files from filea, fileb to filez.
Example7: Move all the files expect .sh file extention files from present directory to /opt.
mv !(*.sh) /opt
Please share your thoughts on this.
!! – To execute the previous executed command
!n – To execute nth the previous executed command
!-n – To execute nth command from latest executed command
!char – To execute command which start with char