завершение удара: как завершить список хостов к определенному аргументу?

Чтобы ответить на ваш вопрос относительно «больше истории». Нет функции CD - в Bash только поддерживает один каталог, который вы можете «перевернуть» обратно. Как @ramesh государства в его ответе. Если вы хотите более длинную историю каталогов, вы можете использовать Pushd и POPD , чтобы сохранить каталог или вернуться к предыдущему.

Вы также можете увидеть список того, что в данный момент в стеке с командой Dirs .

Из этого ответа можно найти подробное объяснение: Как использовать команды pushd и popd? .

-121--10531-

Это невозможно, потому что диапазон действительности различных кодировков.

Вы можете не понравиться ответ, но это факты, на мой взгляд.

1
19.11.2014, 23:43
2 ответа

Если игнорировать случай (), то можно просто проверить, является ли -hosts одним из более ранних слов:

(...)
for ((i=1;i<COMP_CWORD;i++)); do 
  if [ "-hosts" == "${COMP_WORDS[i]}" ]; then 
    _known_hosts_real -a "$cur" 
    return 0 
  fi 
done 
case "${prev}" in 
0
28.01.2020, 01:49

Я не уверен, что можно создать такое автозаполнение правила для разделенных пространственным хостам. Но если вы не возражаете, используете запятые списки, то:

_myhost () {
  local cur prev opts
  _get_comp_words_by_ref cur prev

  opts='-hosts'
  servers='name1 name2 name3'

  if [[ ${cur} == -* ]] ; then
    COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
  else
    case "${prev}" in
      -hosts)
        if [[ "$cur" == *,* ]]; then
          local realcur prefix
          realcur=${cur##*,}
          prefix=${cur%,*}
          COMPREPLY=( $(compgen -W "${servers}" -P "${prefix}," -- ${realcur}) )
        else
          COMPREPLY=( $(compgen -W "${servers}" -- ${cur}) )
        fi
        ;;
      *)
        # do nothing
        ;;
    esac
  fi
}
complete -F _myhost myhost
0
28.01.2020, 01:49

Теги

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