如何在CentOS 8 Linux中添加bash自动完成功能

时间:2020-01-09 10:37:03  来源:igfitidea点击:

如何在CentOS 8(CentOS Enterprise Linux 8)中启用自动完成功能?
如何在CentOS 8中编写简单的bash完成代码?
简介:Bash是一个免费的开源shell。
它是sh兼容的命令语言解释器,它执行从标准输入或文件中读取的命令。

Bash可以运行大多数sh脚本而无需修改。

bash-completion是Shell函数的集合,这些函数利用CentOS 8上bash的可编程完成功能。
在本教程中我们学习了如何在CentOS 8中安装和启用Bash自动完成功能。

如何在CentOS 8中添加bash自动完成

在CentOS Enterprise Linux 8中添加bash完成的过程如下:

  • 打开终端窗口/bash shell提示
  • 通过运行以下命令在CentOS 8上搜索bash-completion:sudo yum search bash-completion
  • 通过运行以下命令在CentOS 8上安装bash的完成:
  • 注销并登录以验证CentOS 8中的bash自动完成是否按预期工作

让我们详细查看所有步骤和示例。

查找有关bash-completion软件包的信息

可以按以下方式进行搜索:

yum search bash-completion

输出示例:

Last metadata expiration check: 0:06:40 ago on Wed Dec 11 17:03:53 2019.
==================== Name Exactly Matched: bash-completion ====================
bash-completion.noarch : Programmable completion for Bash
======================== Name Matched: bash-completion ========================
nbdkit-bash-completion.noarch : Bash tab-completion for nbdkit
libvirt-bash-completion.x86_64 : Bash completion script
libguestfs-bash-completion.noarch : Bash tab-completion scripts for libguestfs tools
coccinelle-bash-completion.noarch : Bash tab-completion for coccinelle
python-django-bash-completion.noarch : bash completion files for Django

另一个选择是在CentOX 8包装盒上列出包装:

yum list bash-completion

输出示例:

Last metadata expiration check: 0:06:06 ago on Wed Dec 11 17:03:53 2019.
Available Packages
bash-completion.noarch                    1:2.7-5.el8                    BaseOS

如何添加Bash完成CentOS 8

Bash补全是自动完成文件名,命令,目录名,主机名等的有用工具。
输入以下yum命令以在CentOS 8中安装自动完成功能:

sudo yum install bash-completion

要么

sudo dnf install bash-completion

如何测试Bash的可编程完成

上面的命令放置了一个名为/etc/profile.d/bash_completion.sh的shell脚本。
您可以在more命令或cat命令的帮助下进行查看:

more /etc/profile.d/bash_completion.sh

要么

cat /etc/profile.d/bash_completion.sh

输出示例:

# Check for interactive bash and that we haven't already been sourced in CentOS server
if [ -n "${BASH_VERSION-}" -a -n "${PS1-}" -a -z "${BASH_COMPLETION_VERSINFO-}" ]; then
 
    # Check for recent enough version of bash.
    if [ ${BASH_VERSINFO[0]} -gt 4 ] || \
       [ ${BASH_VERSINFO[0]} -eq 4 -a ${BASH_VERSINFO[1]} -ge 1 ]; then
        [ -r "${XDG_CONFIG_HOME:-$HOME/.config}/bash_completion" ] && \
            . "${XDG_CONFIG_HOME:-$HOME/.config}/bash_completion"
        if shopt -q progcomp && [ -r /usr/share/bash-completion/bash_completion ]; then
            # Source completion code.
            . /usr/share/bash-completion/bash_completion
        fi
    fi
 
fi
fi

如何在CentOS 8上启用bash完成并在当前会话中使用它

上面的脚本将从您的登录会话或开始新的Shell会话时自动获得呼叫。
对于当前会话,请使用source命令加载它:

source /etc/profile.d/bash_completion.sh

在键入命令以自动完成语法或选项时,按[TAB]键:

sudo dnf i[TAB]
cat /etc/ho[TAB]

在CentOS 8上编写第一个简单的bash完成代码

假设您一直想使用ping命令ping通三个服务器的IP地址/主机名。
因此,在shell提示符下键入以下内容:

complete -W '192.168.2.254 theitroad.local google.com' ping

现在键入ping并按[TAB]键以将任何域名/IP地址用于ping命令:

ping [TAB]