Linux Bash 命令行中可用的标准补全

举报
Tiamo_T 发表于 2022/08/16 16:13:02 2022/08/16
【摘要】 在 Linux 中,默认情况下,Bash 为用户在命令行中使用以下标准补全: 变量名完成 用户名完成 可执行完成 文件名和目录完成 主机名完成

在 Linux 中,默认情况下,Bash 为用户在命令行中使用以下标准补全:

  1. 变量名完成
  2. 用户名完成
  3. 可执行完成
  4. 文件名和目录完成
  5. 主机名完成


1. 变量名补全

在终端中输入 $ 后,按两次 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      

2. 用户名填写

当您按两次 Tab 时,在波浪号 (~) 之后,bash 将自动启动用户名补全。

$ cd ~[TAB][TAB] 
~bala/ ~raj/ 
~jason/ ~randy/ 
~john/ ~ritu/ 
~mayla/ ~thomas/ 
~nisha/ ~www-data

请注意,这不会从主目录中获取用户名。相反,它会显示 /etc/passwd 文件中的所有可用用户名

3. 可执行文件的路径名补全

当您尝试执行命令时,如果可执行文件具有执行权限,它将自动完成,如果找到单个匹配项,如下例所示。

$ 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. 文件名和目录补全

此补全适用于命令行中第二个第二个和后续位置出现的文件名和目录名。与上面的示例不同,这不会检查任何权限,只会显示所有可用的文件和目录。

$ 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. 主机名完成

要获取要连接的主机名,请在 @ 符号后按两次 Tab,如下所示:

$ 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 文件中获取可用的主机名。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。