Bash ใน Linux มีการทำงานอัตโนมัติ (Completion) มาตรฐาน 5 แบบที่พร้อมใช้งานทันที:
- Variable name completion
- Username completion
- Executable completion
- Filename และ Directory completion
- Hostname completion
1. Variable Name Completion
พิมพ์ $ แล้วกด Tab สองครั้ง จะแสดงตัวแปร Shell ทั้งหมด:
$ 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. Username Completion
พิมพ์ ~ แล้วกด Tab สองครั้ง จะแสดงชื่อผู้ใช้จาก /etc/passwd:
$ cd ~[TAB][TAB] ~bala/ ~raj/ ~jason/ ~randy/ ~john/ ~ritu/ ~mayla/ ~thomas/ ~nisha/ ~www-data
หมายเหตุ: ไม่ได้ดึงจากโฮมไดเรกทอรี แต่อ่านจาก /etc/passwd โดยตรง
3. Pathname Completion สำหรับ Executable
เมื่อพิมพ์พาธของไฟล์ที่มีสิทธิ์รัน (execute permission) และกด Tab จะทำงานอัตโนมัติ:
$ 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. Filename และ Directory Completion
ทำงานที่ตำแหน่งอาร์กิวเมนต์ที่ 2 เป็นต้นไป ไม่ตรวจสอบสิทธิ์ แค่แสดงไฟล์/โฟลเดอร์ทั้งหมด:
$ ls countfiles.sh dir1 dir2 dir3 $ cat [TAB][TAB] countfiles.sh dir1 dir2 dir3 $ cat c[TAB][TAB] $ cat countfiles.sh
ถ้ามีไฟล์เยอะมาก จะแสดงข้อความเตือน:
Display all 228 possibilities? (y or n)
5. Hostname Completion
พิมพ์ @ แล้วกด Tab สองครั้ง จะแสดงโฮสต์เนมจาก /etc/hosts:
$ 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