Bash

有沒有辦法讓 Bash 中的命令選項名稱自動完成?

  • April 23, 2022

我正在使用 Bash 4.4。

[root@192 ~]# bash --version
GNU bash, version 4.4.19(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
[root@192 ~]#

我想知道是否有任何方法可以使選項名稱自動完成。例如,如果我鍵入realpath --re併後跟一個Tab,它可以幫助我填寫選項名稱的缺失部分,然後我得到realpath --relative-to=.

如果您啟用了 bash-completion,則命令選項已經存在以完成命令。您可以在類似/usr/share/bash-completion. 已安裝的軟體包,例如git將其腳本放入/etc/bash_completion.d/.

仍然可能有一些腳本,如realpathor echo,完成度有限。realpath要為您應該使用的長選項添加完成_longopt,這是一個用於生成完成的 bash 函式,您可以使用type -a.

complete -F _longopt realpath

在執行此操作之前,您必須測試您嘗試更改的內容是否已經完成,使用:

complete -p realpath

這可以說no completion specification或現有的規則,如complete -F _minimal realpath. 新規則將覆蓋它。所以你不應該盲目地將任何功能,現有的或自定義的,分配給很多命令。命令的完成規則已經存在。

該更改適用於您目前的 shell。要使其永久化,您必須使用source它,例如 via bashrc

引用自:https://unix.stackexchange.com/questions/699929