what is the easiest way to get a host's canonical host name from linux's command line?

If it matters, my shell is bash.

CLARIFICATION: I want another host's canonical hostname, either by ip or by non canonical hostname. Not the local host's canonical hostname.


Use dig(1). For normal lookups use:

dig full.hostname.xxx

and for reverse lookups use:

dig -x

Also check the man page for much more cool options.


A remote host's node name bears no necessary relationship to any of its network names. You'll have to log in and use the hostname command.

If you're looking for the Fully Qualified Domain Name (FQDN) of a network address, you can use DNS query tools like dig or nslookup, as described by @firm and @Richard Holloway.


To be clear, hostname will just return the short name. Use the -f parameter; hostname -f to get the fully qualified name.


You could use also the host command. Like in this example

host xxx.xxx.xxx.xyz

The result will be something like

xyz.xxx.xxx.xxx.in-addr.arpa domain name pointer name.domain.com

To find the fqdn of a remote host with IP xxx.xxx.xxx.xxx you can use

nslookup xxx.xxx.xxx.xxx

and see the answer contains

name = host.domain.net

There is no "reverse lookup" for canonical names. That is: given an A record, there is no way to get a listing of what CNAME records point to it.


Here's the command:


  • I want another host's canonical hostname, either by ip or by non canonical hostname. I should have clarified that. – flybywire Mar 16 '10 at 8:39

You can look up the IP address by name, and then look up the name for that IP address. To do that in one command:

$ dig -x `dig +short www.google.com` | grep PTR. 86309 IN  PTR lhr35s06-in-f4.1e100.net. 86309 IN  PTR lhr35s06-in-f100.1e100.net.

This doesn't work for all sites.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.