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

Я рекомендовал бы, тем более, что Вы не опытный пользователь, отдельный / домой, как выше, и периодическое резервное копирование на оптические среды: дешевый, легкий и несколько надежный. Если бы у Вас действительно есть важные данные, я думал бы о чем-то еще, все же.

6
27.06.2015, 11:33
3 ответа

Установите SET -O , чтобы увидеть, включен, включен, может быть включен POSIX . Если это так, отключить с помощью SET + O POSIX

в режиме «POSIX», вкладка Bash - это по какой-то причине отключено в «VI-MODE». Я не видел никакого объяснения, почему это поведение так, ни почему это специфично для VI-режима, поэтому я не решил объяснять.

PS: Этот ответ более подходит для того, кто ставится на вопрос через поисковую систему ... не для вашей конкретной настройки.

Обновление :
Chet Ramey говорит :

в режиме POSIX режим редактирования VI не должен отображать вкладку для завершения. Это потому, что POSIX.2 полностью определяет поведение VI Режим редактирования, и стандартная вкладка должна быть сопоставлена ​​на себя Вставить по умолчанию.

2
27.01.2020, 20:30

Sudo не дает вам систему входа в систему, если вы не запрашиваете его с -I . Поэтому вы обнаружите, что без него вам нужно будет загрузить завершению системы:

. /etc/bash_completion

Если вы работаете с -I , то $ Home будет qoot , и поэтому что-нибудь написано для пользователя ~ / .bashrc , не будет читать. Если вы можете отделить материал завершения от остальной части вашего ~ / .bashrc , источник, который с . И это должно работать.

-1
27.01.2020, 20:30

Быстрый ответ:

  • Установите bash-completion
  • Исходный код bash_completion на Bash startup
  • Добавьте свой compspec в Bash startup
  • Не перезаписывайте sudo compspec с помощью complete -cf sudo

Я полагаю, что вы используете MacOSX с brew .

Попробуйте:

brew update
brew install bash-completion
brew info bash-completion
# bash-completion: stable 1.3
. $(brew --prefix)/etc/bash_completion
complete -p sudo

Вы должны увидеть что-то вроде этого:

complete -F _root_command sudo

Тест:

function _comp_foo() { COMPREPLY=($(compgen -W 'a b c' -- "$2")); }
complete -F _comp_foo foo

Введите foo Пробел Вкладка Вкладка
Вы должны увидеть abc

Введите sudo foo Пробел Вкладка Вкладка
Вы должны увидеть abc

Затем удалите complete -fc sudo из файлов инициализации. ( ~ / .bash_profile , ~ / .bashrc и т. Д.)
Добавьте следующие строки в файлы инициализации:

if [ -f $(brew --prefix)/etc/bash_completion ]; then
  . $(brew --prefix)/etc/bash_completion
fi

# Your compspec here
complete -o default -o nospace -W "$(sudo ls -1 /var/cache/salt/master/minions)" salt

Повторно откройте терминал.
Введите complete -p sudo .
Вы должны увидеть complete -F _root_command sudo .

Тип полная -p соль .
Вы должны увидеть что-то вроде этого:

complete -o default -o nospace -W 'a
b
c' salt

bash-completion2. * Note :
Вы можете установить bash-completion2 : https://github.com/Homebrew/homebrew/issues/19258
Но:

  • 2. * работает с Bash 4. *
  • 2. * использует параметр -D для отложенной загрузки compspecs. Итак, complete -p sudo выводит complete: sudo: no complete спецификация , пока вы не наберете sudo Space Tab
1
27.01.2020, 20:30

Теги

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