Завершение Smart Bash В зависимости от позиции «Аргумент»

У меня есть простая функция bash, в основном оболочка вокруг scp. Вызывается с использованием

copytomachine <Machine> <File> 

Я создал несколько простых авто, таких, что когда я печатаю

 copytomachine <TAB><TAB> 

Он представляет мне список доступных машин, просто жестко закодированную последовательность в настоящее время, что отлично подходит для моих нужд.

Если, однако, я напечатаю

 copytomachine BUILD_SERVER <TAB><TAB> 

Я бы хотел, чтобы он предложил мне список файлов в моем каталоге и смог автозаполнять их пути и т. Д. Однако я не хочу, чтобы этот список файлов был представлен мне для первого параметра (имя машины).

Мой текущий скрипт завершения выглядит так:

 _machines_completions() { local opts opts="BUILD_SERVER TEST_SERVER LOCAL_MACHINE" COMPREPLY=( $(compgen -W "${opts}" -- ${COMP_WORDS[COMP_CWORD]}) ) return 0 } 

Может ли кто-нибудь сообщить, как я могу изменить это, чтобы позволить мне заполнить вкладку для этих определенных имен машин для параметра 1 и заполнить вкладку для имен файлов по параметру 2?

  • ZSH и завершение файлов с символами новой строки
  • zsh автозавершение некоторых частей каталога
  • Отключить завершение имени файла подстроки в zsh
  • Установите автоматическое завершение для нового типа файлов
  • Заполнять файлы из другого каталога в bash
  • vi <TAB> завершает только каталоги в bash
  • Могу ли я заставить zsh включить стек каталогов в завершение табуляции для тильды (~)?
  • Скрытие завершения zsh
  • One Solution collect form web for “Завершение Smart Bash В зависимости от позиции «Аргумент»”

    Поскольку COMP_CWORD – это номер слова, вы можете проверить его значение:

     _machines_completions() { local opts opts="BUILD_SERVER TEST_SERVER LOCAL_MACHINE" case $COMP_CWORD in 1) COMPREPLY=( $(compgen -W "${opts}" -- "${COMP_WORDS[COMP_CWORD]}") ) ;; 2) COMPREPLY=( $(compgen -o default -- "${COMP_WORDS[COMP_CWORD]}") ) ;; esac return 0 } 

    -o default :

    Использовать полное имя файла Readline по умолчанию, если compspec не дает совпадений.

    Interesting Posts

    Что означает `, и в` man test`?

    Есть ли параметр / etc / network / interfaces, например wireless-ap, за исключением соединения wpa-ssid / wpa-psk?

    эхо-цветной текст, который динамически меняет цвета

    интерфейс linux для подключения IP-адресов

    Задержка перед появлением нового / измененного файла

    На страницах руководства используется цитата: `<символ / строка> '(строка цитирования внутри серьезного акцента и апострофа)

    Трубы и замена процесса

    почему эта замена шаблонов не работает над массивом?

    Текстовый файл в полях (столбцах) каждого n-го вхождения строки

    Расположение сценария Fsck

    Как заставить API evdev использовать API-интерфейс Joystick?

    Как получить только один символ после совпадения в строке (для определения версии RHEL от rpm)

    Debian не может настроить DHCP

    Нужна помощь в поиске номеров идентификаторов CPU для использования с наборами процессоров

    Какова цель командной строки grub

    Linux и Unix - лучшая ОС в мире.