如何在 Alpine Linux 上启用 bash 命令自动完成
让我们看看如何安装和启用 bash 命令自动完成功能以提高生产力。
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 是的 |
要求 | Linux 终端 |
操作系统兼容性 | Alpine • Linux |
预计阅读时间 | 5 分钟 |
在 Aline Linux 上启用 bash 命令自动完成
在 Alpine 中添加 bash 完成支持的流程如下:
- 打开终端应用程序。
- 对于远程服务器,使用 ssh 命令登录,然后输入:
apk update - 通过运行apk 命令在 Alpine Linux 上安装 bash-completion 包:
apk add bash-completion安装 bash-completion
- 使用 source 命令加载自动完成功能:
source /etc/bash/bash_completion.sh - 编辑~/.bash_profile并添加以下行:
source /etc/bash/bash_completion.sh - 通过编辑/etc/passwd将 bash 设置为默认 shell 。例如:
vivek:x:500:500:Vivek Gite:/home/vivek:/bin/bash - 注销并登录以验证 Alpine Linux 中的 bash 自动完成是否按配置和安装运行。
Bash 自动完成相关文件
所有新安装的 shell 都列在 /etc/shells 文件中。当您编辑 /etc/passwd 以将 shell 更改为 bash 时,请使用 /etc/shells 中提到的正确路径。因此,请键入以下grep 命令/ cat 命令:
查找 bash shell 版本对于解决任何脚本问题非常重要。因此,运行以下命令查看 GNU/bash 版本:有关更多详细信息,
请参阅“如何找出我在 Linux/Unix 上使用的 shell ”。
$ cat /etc/shells
$ grep bash /etc/shells
$ bash --version
相关:如何在 Alpine Linux 中安装 bash shell
找出 Alpine Linux 存储 bash 自动完成的位置
想要了解 bash 命令自动完成功能的工作原理?运行以下命令:
$ cat /etc/bash/bash_completion.sh
输出:
# shellcheck shell=sh disable=SC1091,SC2039,SC2166 # Check for interactive bash and that we haven't already been sourced. if [ "x${BASH_VERSION-}" != x -a "x${PS1-}" != x -a "x${BASH_COMPLETION_VERSINFO-}" = x ]; then # Check for recent enough version of bash. if [ "${BASH_VERSINFO[0]}" -gt 4 ] || [ "${BASH_VERSINFO[0]}" -eq 4 -a "${BASH_VERSINFO[1]}" -ge 2 ]; 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
现在,进入 /usr/share/bash-completion/completions/ 并查看文件。输入 cd 命令并发出 ls 命令以列出这些文件。例如:输出:
$ cd /usr/share/bash-completion/completions/
$ ls -l
total 2224 -rw-r--r-- 1 root root 923 Apr 11 13:10 2to3 -rw-r--r-- 1 root root 4298 Apr 11 13:10 7z lrwxrwxrwx 1 root root 2 May 10 21:01 7za -> 7z -rw-r--r-- 1 root root 926 Apr 11 13:10 _cal -rw-r--r-- 1 root root 238 Apr 11 13:10 _chfn -rw-r--r-- 1 root root 698 Apr 11 13:10 _chsh -rw-r--r-- 1 root root 929 Apr 11 13:10 _dmesg -rw-r--r-- 1 root root 813 Apr 11 13:10 _eject -rw-r--r-- 1 root root 677 Apr 11 13:10 _hexdump -rw-r--r-- 1 root root 622 Apr 11 13:10 _hwclock ... ..... .. lrwxrwxrwx 1 root root 4 May 10 21:01 wine-development -> wine lrwxrwxrwx 1 root root 4 May 10 21:01 wine-stable -> wine -rw-r--r-- 1 root root 411 Apr 11 13:10 withlist -rw-r--r-- 1 root root 3582 Apr 11 13:10 wodim -rw-r--r-- 1 root root 1192 Apr 11 13:10 wol -rw-r--r-- 1 root root 1126 Apr 11 13:10 wsimport -rw-r--r-- 1 root root 937 Apr 11 13:10 wtf -rw-r--r-- 1 root root 1279 Apr 11 13:10 wvdial -rw-r--r-- 1 root root 2226 Apr 11 13:10 xdg-mime -rw-r--r-- 1 root root 757 Apr 11 13:10 xdg-settings -rw-r--r-- 1 root root 2100 Apr 11 13:10 xfreerdp -rw-r--r-- 1 root root 2062 Apr 11 13:10 xgamma -rw-r--r-- 1 root root 378 Apr 11 13:10 xhost -rw-r--r-- 1 root root 1270 Apr 11 13:10 xmllint -rw-r--r-- 1 root root 694 Apr 11 13:10 xmlwf -rw-r--r-- 1 root root 695 Apr 11 13:10 xmms -rw-r--r-- 1 root root 437 Apr 11 13:10 xmodmap lrwxrwxrwx 1 root root 6 May 10 21:01 xpovray -> povray -rw-r--r-- 1 root root 2235 Apr 11 13:10 xrandr -rw-r--r-- 1 root root 512 Apr 11 13:10 xrdb -rw-r--r-- 1 root root 1224 Apr 11 13:10 xsltproc -rw-r--r-- 1 root root 886 Apr 11 13:10 xvfb-run lrwxrwxrwx 1 root root 9 May 10 21:01 xvnc4viewer -> vncviewer -rw-r--r-- 1 root root 491 Apr 11 13:10 xxd -rw-r--r-- 1 root root 1520 Apr 11 13:10 xz -rw-r--r-- 1 root root 639 Apr 11 13:10 xzdec lrwxrwxrwx 1 root root 7 May 10 21:01 ypcat -> ypmatch -rw-r--r-- 1 root root 759 Apr 11 13:10 ypmatch -rw-r--r-- 1 root root 357 Apr 11 13:10 yum-arch -rw-r--r-- 1 root root 677 Apr 11 13:10 zopfli -rw-r--r-- 1 root root 920 Apr 11 13:10 zopflipng
使用 man 命令或 help 命令查看 man 命令的自动完成功能:
$ man bash
$ help complete
$ help compgen
用于 bash 自动完成的示例 ~/.bash_profile
使用cat 命令显示:
$ cat ~/.bash_profile
输出:
source /etc/bash/bash_completion.sh export HISTTIMEFORMAT="%d/%m/%y %T " export PS1='\u@\h:\W \$ ' alias vi='vim' alias vnstat='vnstat -i eth0' alias l='ls -CF' alias la='ls -A' alias ll='ls -alF' alias ls='ls --color=auto' export PS1="\[\e[31m\][\[\e[m\]\[\e[38;5;172m\]\u\[\e[m\]@\[\e[38;5;153m\]\h\[\e[m\] \[\e[38;5;214m\]\W\[\e[m\]\[\e[31m\]]\[\e[m\]\\$ "
安装 ZFS bash 自动完成支持
默认情况下,Alpine Linux 服务器未安装 zfs 支持。因此我们需要添加它。首先,使用wget 命令或curl 命令从 OpenZFS 项目仓库下载文件,获取文件。使用mkdir 命令创建新目录:
使用文本编辑器(如 vim 命令)验证文件:
编辑 ~/.bash_profile 并附加以下行以加载 zfs 支持:
$ mkdir ~/bash_completion/
$ cd ~/bash_completion/
$ wget https://raw.githubusercontent.com/openzfs/zfs/master/contrib/bash_completion.d/zfs
$ vim zfs
$ source ~/bash_completion/zfs
结论
您学习了如何在 Alpine Linux 下安装和启用 bash 命令自动完成功能。Bash-completion 是 Bash shell 的命令行命令完成的集合,一组用于创建新完成的辅助函数,以及一组用于按需自动加载完成以及安装它们的工具。因此,请参阅项目主页以查看用于学习目的的文档和源代码。还可以使用 man 命令或 help 命令阅读以下手册页:
$ man bash
$ help compgen