Динамический выбор символа суффикса завершения tcsh
Я работаю над сценарием завершения tcsh для инструмента, который создает виртуальное дерево файлов. При запросе этот инструмент возвращает все доступные элементы, смешивающие файлы и каталог в результате (каталоги имеют конечный символ /, чтобы отличать их от файлов).
Например, эта команда доступности списка (module avail
) может дать следующий результат:
$ module avail
file
b
cd/
d
dir/
Затем, если запрашивается содержимое каталога, возвращаются содержащиеся в нем элементы:
$ module avail dir/
dir/e
dir/f
dir/subdir/
Я хотел бы добавить эти доступные элементы в качестве выбора для других подкоманд инструмента. Завершение Tcsh автоматически добавляет пробел в качестве суффикса, когда слово завершено. Здесь нужно добавить этот пробел-символ-суффикс, только если слово завершения не является каталогом. В случае каталога не следует добавлять суффиксный символ, чтобы можно было начать новый запрос по этому имени каталога.
Вот небольшой скрипт завершения, чтобы продемонстрировать проблему, с которой я столкнулся:
alias _module_avail 'echo file b cd/ d dir/'
set module_cmds = "load"
complete module 'n/load/`_module_avail`//' \
"p/1/(${module_cmds})/"
В этом примере сценария я хотел бы добавить символ пробела, когда module load fi[tab]
набирается, но не добавляется пробел module load dir[tab]
набрано.