Как указать пользовательское автоматическое заполнение для определенных команд?

Нет.

Для одного я верю этому /var/cache/bind/ каталог по умолчанию, где bind9 ожидает, что его зональные файлы будут сохранены (по крайней мере, на Debian; я не знаю бесцеремонно, если другие дистрибутивы следуют примеру),

Для другого, согласно этой документации, pacman (диспетчер пакетов, используемый Arch Linux), хранит его кэш пакета под /var/cache/pacman/pkg/ и это, скорее всего, ожидает только, что себя изменит содержание.

Я рекомендую, чтобы Вы прочитали документацию более тесно и решили, является ли это хорошим временем для очистки кэша пакета.

25
23.08.2014, 06:49
2 ответа

Самый легкий способ сделать это состоит в том, чтобы включать сценарий оболочки в /etc/bash_completion.d/. Базовая структура этого файла является простой функцией, которая выполняет завершение и затем вызов complete который является встроенным ударом. Вместо того, чтобы вдаваться в подробности о том, как использовать complete, Я предполагаю, что Вы читаете Введение в Завершение Bash. Часть 1 покрывает основы, и Часть 2 входит, как Вы пошли бы о записи сценария завершения.

Более плотное описание завершения удара может быть найдено в разделе "Programmable Completion" man bash (можно ввести "/Программируемое Завершение" и затем нажать 'n' несколько раз для получения там быстро. Или, если Вы чувствуете удачу, "ВОЗВРАТ g 2140").

31
27.01.2020, 19:40

Вот основное руководство.

Приведем пример скрипта admin.sh, в котором вы хотите, чтобы работало автозаполнение.

#!/bin/bash

while [ $# -gt 0 ]; do
  arg=$1
  case $arg in
    option_1)
     # do_option_1
    ;;
    option_2)
     # do_option_1
    ;;
    shortlist)
      echo option_1 option_2 shortlist
    ;;
    *)
     echo Wrong option
    ;;
  esac
  shift
done

Обратите внимание на опцию shortlist. При вызове скрипта с этой опцией будут выведены все возможные варианты для этого скрипта.

И вот перед вами скрипт автозаполнения:

_script()
{
  _script_commands=$(/path/to/your/script.sh shortlist)

  local cur prev
  COMPREPLY=()
  cur="${COMP_WORDS[COMP_CWORD]}"
  COMPREPLY=( $(compgen -W "${_script_commands}" -- ${cur}) )

  return 0
}
complete -o nospace -F _script ./admin.sh

Обратите внимание, что последний аргумент complete - это имя скрипта, в который вы хотите добавить автозаполнение. Все, что вам нужно сделать, это добавить ваш скрипт автозавершения в bashrc как

source /path/to/your/autocomplete.sh

или скопировать его в /etc/bash.completion.d

Источник: https://askubuntu.com/a/483149/24155

8
27.01.2020, 19:40

Теги

Похожие вопросы