Во-первых, вы не понимаете, что такое доменное имя. 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-сервера.)
Фрагмент ниже заставляет 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'
load_helper_functions
. Если вы удалите его из приведенного выше кода, он будет работать только в том случае, если завершение для git
было выполнено хотя бы один раз в текущем сеансе zsh. $words[1]
— первое слово команды -с аргументами -, которая должна быть завершена. complete -k …
регистрирует функцию _complete-remotes
как виджет завершения (, что позволяет ей запускать встроенные функции завершения )и привязывает ее к Meta + r .