Spi*_*dey 13 bash ubuntu autocomplete
我正在 Ubuntu 上安装ripgrep。它不存在于官方存储库或私人 PPA 上,因此我按照项目的说明将其安装为树外包: https: //github.com/BurntSushi/ripgrep#installation。
我设法了解到这些包应该存在于/usr/local
:
/usr/local/bin
对于二进制文件/usr/local/share/doc/<package_name>
用于文档/usr/local/share/man
用于手册页bash 完成怎么样?据我所知,这比其他类别稍微不太标准化,并且可能特定于每个Bash
安装。在Ubuntu下有什么方法可以做到这一点?
Mes*_*ion 16
经过大量阅读后,我收集到的信息,特别是他们的官方文档、/usr/share/doc/bash-completion/README.Debian
以及来源本身:
/etc/bash_completion.d/
是遗留目录,其中补全被急切地加载,即在主脚本运行时立即获取所有内容。只有少数软件包仍然安装在那里,大多数已经迁移到新标准。
/usr/share/bash-completion/completions/
是按需动态加载的完成文件的目录bash-completion
。它们仅在需要时才获取(最重要的是,如果需要的话),通过不加载您永远不会使用的命令的无数补全来节省大量资源。
关于您的这条评论/etc
:
它将与 apt 控制的包混合在一起......我希望有一个单独的路径
处的文件/etc
并不完全“易于控制”,至少不是以相同的方式/usr/bin
或/usr/share
方式。[1]它们是配置文件,由本地管理员(您)修改。包在安装时创建它们,通常包含默认值,然后您应该根据需要修改它们。
有些软件包更进一步简化了维护,它们还为“插入”额外的自定义文件创建了一个(空)配置目录,而不是(或与)配置文件一起。因此,您只需创建(或删除)覆盖grep
所需设置的“配置片段”文件,sed
而不是使用 、 和 等工具修改配置文件来更改某些设置,这是一项困难且容易出错的任务。awk
查看/etc/{,*/}*.d/
系统中的所有目录。您的软件包是否想要安装自定义存储库,例如 Google Chrome?不要编辑/etc/apt/sources.list
,将文件拖放到/etc/apt/sources.list.d/
. 新服务?/etc/systemd/system/
。系统设置?/etc/sysctl.d/
(顺便说一句,请参阅其自述文件)。
容易多了,而且不再踩对方的脚趾。
中的某些目录的/usr/share
行为也类似于:您的.desktop
文件转到/usr/share/applications/
,新的 mimetype 转到/usr/share/mime/packages/
,等等。不同之处/etc
在于,您(管理员)不应修改或删除不是您自己创建/安装的文件。
情况正是如此/usr/share/bash-completion/completions/
。
也就是说,我有好消息和坏消息要告诉你:
坏消息是...如果您想在他们的 github 存储库中安装完成,那不是 bash 完成,而是zsh
完成文件!不,bash 和 zsh在完成方面完全不兼容。
别担心,因为好消息是:自 Ubuntu 18.10 起ripgrep
可在 apt 存储库上使用!耶!:D
sudo apt install ripgrep
Run Code Online (Sandbox Code Playgroud)
你猜怎么着?它包含一个bash 完成文件!当然是安装在/usr/share/bash-completion/completions/rg
.
是时候高兴了,朋友!
[1]:说实话,你可以说他们是“容易被监控”,而不是被控制。阅读您需要了解的有关 conffiles 的一切:由 dpkg 管理的配置文件以获取更多详细信息。
根据常见问题解答手册~/.local/share/bash-completion/completions/
,如果是您自己的本地补全,您通常应该将补全文件放在一般情况下。mkdir -p
如果该目录不存在,您当然可以使用它。
将它们放在(默认为或如果未设置)
completions
的子目录中,以便在完成相应命令时根据需要自动加载它们。$BASH_COMPLETION_USER_DIR
$XDG_DATA_HOME/bash-completion
~/.local/share/bash-completion
$XDG_DATA_HOME
文件名是有意义的。
此目录中命令
foo
的完成文件名应该是foo
, 或foo.bash
。(下划线前缀 _foo 也可以工作,但保留用于 bash 完成内部用作弃用/后备标记。)
归档时间: |
|
查看次数: |
6840 次 |
最近记录: |