Я работаю над сценарием завершения 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]
не добавляется суффикс пробела.