如何在RHEL 8(Red Hat Linux)中添加bash自动完成功能

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

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

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

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

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

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

  • 打开终端窗口/bash shell提示
  • 通过运行以下命令在RHEL 8上搜索bash-completion:sudo yum search bash-completion
  • 通过运行以下命令在RHEL 8上安装bash的可编程完成功能:sudo yum install bash-completion
  • 注销并登录以验证RHEL 8中的bash自动完成是否正常工作

让我们详细了解所有步骤。

如何添加bash完成RHEL 8

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

$ sudo yum install bash-completion

要么

$ sudo dnf install bash-completion

如何测试Bash的可编程完成

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

$ cat /etc/profile.d/bash_completion.sh

输出示例:

# Check for interactive bash and that we haven't already been sourced.
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

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

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

$ source /etc/profile.d/bash_completion.sh

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

$ sudo yum i[TAB]
$ cat /etc/re[TAB]

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

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

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

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

ping [TAB]