[1130278] Поскольку вы использовали [1130716]compgen -f[1130717], это означает [1130718]compgen[1130719] перечислит все файлы и каталоги по текущему пути. В вашем случае это означает [1130720]0A6F010B 0A6F010C 0A6F010D 0A6F010E[1130721]. [12182]Чтобы получить имена хостов, вы можете пройти по текущему пути, передать каждый IP в [1130722]getnameinfo[1130723], чтобы получить имя хоста, соответствующее этому IP, сохранить его в массиве, а затем использовать этот массив в качестве словаря с [1130724]compgen -W[1130725].[12183]Я провел простой тест в своем окружении. Я создал файл [1130726]/etc/bash_completion.d/cuonglm[1130727]:[12184]Я использовал всю вашу функцию с небольшим изменением:[12185]Я использую массив [1130898]HOST_ARR[1130899] для сохранения имен хостов. [12186]Просмотрите текущий каталог (спасибо [1130900]pushd[1130901]), передавая каждое имя файла в программу [1130902]getnameinfo[1130903]. [12187]Затем я использую [1130904]compgen -W[1130905], чтобы заставить compgen создать словарь для завершения.[12188]И вот результат:[12189]Поскольку два имени хостов имеют одну и ту же порцию [1130734]сервера[1130735], bash сначала автозавершит эту порцию. Если есть другое имя хоста, [1130736]Server.example[1130737]:[12190]
garethTheRed
11.08.2014, 18:00
Ссылка