Назад | Перейти на главную страницу

Использование автозаполнения в Linux со списком слов и файлами текущего каталога

Я установил автозаполнение в своем .bashrc следующим образом:

complete -W "$(echo `cat ~/.ssh_complete`;)" scp

но при этом использовались ТОЛЬКО слова, указанные в файле ~/.ssh_complete. Как можно расширить определение таким образом, чтобы scp также использует имена файлов в локальном каталоге.

Подойдет простое решение моей проблемы (имена файлов и слова в списке слов), мне не требуется завершение табуляции для распознавания формата / деталей фактического scp команда. Опять же: я хочу, чтобы завершение табуляции отображало имена файлов в текущем каталоге И отображало записи, указанные в файле ~/.ssh_complete.

Когда появляется новое предложение, я редактирую файл .bashrc, введите его и попробуйте завершить табуляцию на scp очередной раз.

Как задокументировано, вы можете комбинировать их с:

complete -o <comp-options> -W "$(cat ~/.ssh_complete)" scp

куда <comp-options> позволяет указать, какой тип поведения вы хотите.

Я избавился от нелепого UUoC и эхо для вас.

хорошо, если вы напишете функцию, как показано ниже

function _scp_complete
{

 COMPREPLY=""
 COMPREPLY+=( $(cat ~/.ssh_complete ) )
 COMPREPLY+=( $( ls ) )

}

затем

complete -F _scp_complete scp

-F для завершения означает запустить указанную функцию (_scp_complete), затем использовать массив COMPREPLY с каждым элементом как одно завершение

В функции я сбрасываю COMPREPLY, чтобы она оставалась пустой. Затем я выбираю ~ .ssh_complete (каждая строка становится одним элементом COMPREPLY), а затем добавляю вывод ls.