Linux では、デフォルトで、Bash はユーザーがコマンド ラインで使用できる次の標準補完を提供します。
<オール>
1.変数名の補完
ターミナルで $ を入力した後、タブを 2 回押すと、以下に示すように、使用可能なすべてのシェル変数が表示されます。
$ echo $[TAB][TAB] $_ $COMP_POINT $HOSTTYPE $PS1 $_backup_glob $COMPREPLY $IFS $PS2 $BASH $COMP_TYPE $inx $PS4 $BASH_ALIASES $COMP_WORDBREAKS $LANG $PWD $BASH_ARGC $COMP_WORDS $LANGUAGE $RANDOM $BASH_ARGV $cur $LESSCLOSE $redir $BASH_CMDS $cword $LESSOPEN $SECONDS $BASH_COMMAND $DIRSTACK $LINENO $SHELL $BASH_COMPLETION_COMPAT_DIR $DISPLAY $LINES $SHELLOPTS $BASH_LINENO $errx $LOGNAME $SHLVL $BASHOPTS $EUID $LS_COLORS $split $BASHPID $exclude $MACHTYPE $SUDO_COMMAND $BASH_REMATCH $flag $MAIL $SUDO_GID $BASH_SOURCE $FUNCNAME $MAILCHECK $SUDO_UID $BASH_SUBSHELL $GROUPS $OLDPWD $SUDO_USER $BASH_VERSINFO $__grub_script_check_program $OPTERR $suffix $BASH_VERSION $HISTCMD $OPTIND $TERM $__colormgr_commandlist $HISTCONTROL $OSTYPE $UID $COLORTERM $HISTFILE $outx $USER $COLUMNS $HISTFILESIZE $PATH $USERNAME $COMP_CWORD $HISTSIZE $PIPESTATUS $words $COMP_KEY $HOME $PPID $XAUTHORITY $COMP_LINE $HOSTNAME $prev $_xspecs
2.ユーザー名の完成
チルダ (~) の後にタブを 2 回押すと、bash は自動的にユーザー名の補完を開始します。
$ cd ~[TAB][TAB] ~bala/ ~raj/ ~jason/ ~randy/ ~john/ ~ritu/ ~mayla/ ~thomas/ ~nisha/ ~www-data
これは、ホーム ディレクトリからユーザー名を取得しないことに注意してください。代わりに、/etc/passwd ファイルから利用可能なすべてのユーザー名を表示します
3.実行可能ファイルのパス名補完
コマンドを実行しようとしているときに、実行可能ファイルに実行権限があれば、以下の例に示すように 1 つの一致が見つかった場合、コマンドは自動的に完了します。
$ ls -l /etc/init.d/reboot -rwxr-xr-x 1 root root 639 Jan 30 2013 /etc/init.d/reboot $ /etc/init.d/reb[TAB][TAB] $ /etc/init.d/reboot
複数の一致が見つかった場合、使用可能なコマンドが表示されます。
4.ファイル名とディレクトリの補完
この補完は、コマンド ラインの 2 番目以降の位置にあるファイル名とディレクトリ名用です。上記の例とは異なり、これはパーミッションをチェックせず、利用可能なすべてのファイルとディレクトリを表示するだけです。
$ ls countfiles.sh dir1 dir2 dir3 $ cat [TAB][TAB] countfiles.sh dir1 dir2 dir3 $ cat c[TAB][TAB] $ cat countfiles.sh
また、表示するファイルが多数ある場合、すべての可能性を画面に表示する代わりに、非常に混乱する可能性があるため、次の警告メッセージが表示されます。
$ ls -l /etc/ Display all 228 possibilities? (y or n)
5.ホスト名の補完
接続先のホスト名を取得するには、以下に示すように @ 記号の後にタブを 2 回押します。
$ ssh john@[TAB][TAB] @dev-db @fileserver @qa-server @prod-db @localhost @web-server
このホスト名補完機能は、ホスト名に @ を指定できる任意のコマンドと一緒に使用できます。たとえば、以下に示すように scp でもこれを使用できます。
$ scp filename.txt john@[TAB][TAB] @dev-db @fileserver @qa-server @prod-db @localhost @web-server
これにより、利用可能なホスト名が /etc/hosts ファイルから取得されることに注意してください。