Завершить что-то не по контексту в zsh

Во-первых, вы не понимаете, что такое доменное имя. bitofagoob@my.domain.comне является доменным именем; это адрес электронной почты (или, может быть, адрес XMPP/Jabber, или куча других вещей, которые следуют этому формату ). Он состоит из локальной части (bitofagoob), разделителя(@)и полного -квалифицированного доменного имени(my.domain.com).

Доменное имя — это любое имя, разрешаемое через DNS. Полное -определенное доменное имя — это имя, в котором не пропущена часть суффикса; например, вы можете решить myhostname, потому что ваша система знает, что нужно попытаться добавить mydomain.comв конец автоматически. myhostname.mydomain.com— это полное -квалифицированное доменное имя. Обычно сокращенно FQDN. Вы можете добавить точку в конце имени, чтобы сообщить локальному преобразователю DNS, что это полное доменное имя, и не пытаться добавлять какие-либо настроенные поисковые суффиксы.

DNS организована в виде иерархии, начиная с правой стороны полного доменного имени. Каждый уровень решает, кто контролирует следующий уровень; вы начинаете справа с корневого домена (.)(, контролируемого ICANN ); затем перейдите на com.(, контролируемую Verisign по контракту с ICANN и разрешающую открытую регистрацию через многих регистраторов ).ICANN решила, что владелец домена com.под-домена (, такого как domain.com.), контролирует его.

Таким образом, владелец регистрации domain.com.решил заставить my.domain.com.работать. Они могут создавать столько уровней, сколько захотят (в разумных пределах, я почти уверен, что у DNS есть предел ), и делегировать контроль над этими уровнями тому, кому они пожелают (, или оставить контроль себе ).

Люди, контролирующие Duckdns.org, установили для вас «подстановочный знак» — они сделали anything.bitofagoob.duckdns.orgразрешением таким же, как bitofagoob.duckdns.org. (Это относительно легко сделать с помощью большинства программ DNS-сервера.)

0
25.07.2019, 21:56
1 ответ

Фрагмент ниже заставляет Meta + r завершать удаленные имена git в командной строке git и имена хостов в других местах.

_complete-remotes () {
  case $words[1] in
    git) load_helper_functions _git; __git_remotes;;
    *) _hosts;;
  esac
}
compdef -k _complete-remotes complete-word '^[r'
  • См. Можно ли использовать вспомогательную функцию из файла завершения ZSH в другом для load_helper_functions. Если вы удалите его из приведенного выше кода, он будет работать только в том случае, если завершение для gitбыло выполнено хотя бы один раз в текущем сеансе zsh.
  • $words[1]— первое слово команды -с аргументами -, которая должна быть завершена.
  • complete -k …регистрирует функцию _complete-remotesкак виджет завершения (, что позволяет ей запускать встроенные функции завершения )и привязывает ее к Meta + r .
3
28.01.2020, 03:25

Теги

Похожие вопросы