Linux has many tricks that can reduce the number of keystrokes it takes to type in commands. Here are six of them. Credit: electravk / Getty Images Linux commands offer a lot of flexibility. This post details some ways to make them even more convenient to use by making use of some clever tricks. Using file-name completion You can avoid typing a full file name by typing the beginning of its name and pressing the tab key. If the string uniquely identifies a file, doing this will complete the filename. Otherwise, you can enter another letter in the name and press tab again. However, you can also get a list of all files that begin with a particular string by typing the string and then hitting the tab key twice. In this example, we do both: $ ls di diff-commands dig.1 directory dig.2 dimensions disk-usage-commands $ cd dir $ pwd directory Reusing commands and changing them Reissuing recently used commands is easy in bash. To rerun the previous command, all you have to do it type !! on the command line. You can also reissue a command with changes. If you issued the first command shown below only to find that sshd wasn’t running, you could issue the second command to start it. It simply replaces “status” with “start”. sudo systemctl status sshd !!:s/status/start/ Reusing command arguments You can also reuse just the arguments provided to the previous command without having to retype them by using the string !* as shown in this example: $ mkdir dir1 dir2 dir3 $ chmod 770 !* chmod 770 dir1 dir2 dir3 Notice that the command is displayed in full after you type the command using “!*”. Keep in mind that “all arguments” really does mean “all arguments”. If after typing the commands shown above, you want to list the directories you just created using the !* trick, you’ll run into a small problem. $ ls -ld !* ls -ld 770 dir1 dir2 dir3 ls: cannot access '770': No such file or directory drwxrwx---. 2 shs shs 4096 Jun 6 2018 dir1 drwxrwx---. 2 shs shs 4096 Jun 6 2018 dir2 drwxrwx---. 2 shs shs 4096 May 11 09:20 dir3 Looking only at recently entered commands The history command makes it easy to review previously entered commands, but usually displays 1000 (i.e., all) of the commands that are in your history buffer. If you want to see only recently entered commands, the easiest and fastest way is to supply the number of commands that you want to view as an argument to the history command. This listing shows the most recent five commands entered. $ history 5 1162 11/05/21 13:10:54 shopt | wc -l 1163 11/05/21 13:19:42 sudo systemctl status 1164 11/05/21 13:20:01 sudo systemctl status sshd 1165 11/05/21 13:23:37 man history 1166 11/05/21 13:23:50 history 5 You could also use a command like “history | tail -5”, but the one just shown is easier and doesn’t require sending 1000 lines of output to the tail command. Searching through history for specific commands and rerunning them To look back into your recently used commands (most recent first) in order to rerun some particular command, type ^r (hold control key and press “r”). Then type a portion of the command. Keep pressing ^r until you land on the command that you want to reuse and then just press the return key. (reverse-i-search)`opt': shopt | wc -l $ shopt | wc -l 53 The output shown tells us that the shopt command has 53 settings. Making file backups super easy One very convenient way to back up a file is to use a command like this that adds “.backup” to the backup file: $ cp myfile{,.backup} The same technique works for the mv command when you, instead, want to rename the file. $ mv myfile{,.backup} If you want to back up a series of files, you can save a little time and trouble by using a script like this one: #!/bin/bash for file in $* do cp $file{,.backup} ls -l $file.backup done The following script will take the list of files you provide as arguments and copy each to its *.backup form. You can change “backup” to “old” or some other word if you like. $ backup thisfile thatfile otherfile -rw-r--r--. 1 shs shs 1234 May 11 13:37 thisfile.backup -rw-r--r--. 1 shs shs 2012 May 11 13:37 thatfile.backup -rw-r--r--. 1 shs shs 876 May 11 13:37 otherfile.backup Depending on the names of the files you are backing up, you can also use wild cards. For example: $ backup project* -rwxrwxr-x. 1 shs shs 16800 Jan 5 18:10 project.log -rwxrwxr-x. 1 shs shs 16840 Jan 5 18:44 project.plan -rw-rw-r--. 1 shs shs 324 Jan 5 17:51 project.staff Wrap-Up I’ve loved the Linux command line since I first used it nearly forty years ago. And the best part? There’s always more to learn and more ways to make it even nicer to use! Related content how-to How to find files on Linux There are many options you can use to find files on Linux, including searching by file name (or partial name), age, owner, group, size, type and inode number. By Sandra Henry Stocker Jun 24, 2024 8 mins Linux opinion Linux in your car: Red Hat’s milestone collaboration with exida With contributions from Red Hat and critical collaborators, the safety and security of automotive vehicles has reached a new level of reliability. By Sandra Henry Stocker Jun 17, 2024 5 mins Linux how-to How to print from the Linux command line: double-sided, landscape and more There's a lot more to printing from the Linux command line than the lp command. Check out some of the many available options. By Sandra Henry Stocker Jun 11, 2024 6 mins Linux how-to Converting between uppercase and lowercase on the Linux command line Converting text between uppercase and lowercase can be very tedious, especially when you want to avoid inadvertent misspellings. Fortunately, Linux provides a handful of commands that can make the job very easy. By Sandra Henry Stocker Jun 07, 2024 5 mins Linux PODCASTS VIDEOS RESOURCES EVENTS NEWSLETTERS Newsletter Promo Module Test Description for newsletter promo module. Please enter a valid email address Subscribe