Tab Completion

All of the modern shells have command and filename completion via the <TAB> key. Bourne shell and csh do not, but ksh, bash, tcsh, and zsh all have tab completion to varying degrees. The basic principle in all of these shells is the same; you type the start of the word, hit the <TAB> key twice, and the list of possible commands or files is displayed. The actual details differ in implementation, so a brief overview of how to get things done in each of these shells follows.

ksh

Typing ca and then hitting <TAB> twice results in a list rather like that produced by the select command. Each item is numbered so you simply enter the number that relates to your choice followed by another <TAB>. For example, ca could be the start of cancel, callgrind_annotate, or any of these other possibilities.

ksh$ ca<TAB><TAB>
 1) /usr/bin/cancel
 2) /usr/bin/callgrind_annotate
 3) /usr/bin/cameratopam
 4) /usr/bin/callgrind_control
 5) /usr/bin/cancel.cups
 6) /usr/bin/cal
 7) /usr/bin/captoinfo
 8) /usr/bin/catchsegv
 9) /usr/bin/card
10) /usr/sbin/cacertdir_rehash
11) /usr/sbin/callback
12) /bin/cat
6<TAB>
ksh$ /usr/bin/cal
     March 2011
Su Mo Tu We Th Fr Sa
       1  2  3  4  5
 6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
$

Filename completion works in exactly the same way:

ksh$ cat /etc/host<TAB><TAB>
1) host.conf
2) hosts
3) hosts.allow
4) hosts.deny
4<TAB>
ksh$ cat /etc/hosts.deny

tcsh

tcsh acts in much the same way, but the options are ...

Get Shell Scripting: Expert Recipes for Linux, Bash, and More now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.