READLINK(1)

πŸ“¦
version 9.10 Β· 5 versions
, in ubuntu stonking

πŸŽ€ NAME πŸŽ€

readlink β€” print resolved symbolic links or canonical file names

okay so bestie, this is the readlink(1) page and I'm gonna hold your hand through the whole thing πŸ’– it's short, it's sweet, it's lowkey iconic, and it has just enough sharp edges that you wanna know them before you poke.


πŸ“œ SYNOPSIS πŸ“œ

readlink [OPTION]... FILE...

like, you give it options, you give it files, it does the thing. that's the vibe ✨


✨ DESCRIPTION ✨

first thing's first, and the page itself is being so honest with you: realpath(1) is a better command for canonicalization functionality. fr fr. so if canonicalizing paths is literally your whole personality, go be besties with realpath(1) instead. no hard feelings, readlink gets it πŸ™ˆ

that said β€” what it does is print value of a symbolic link or canonical file name. πŸ¦‹

πŸ’… OPTIONS πŸ’…

  • -f, --canonicalize β€” canonicalize by following every symlink in every component of the given name recursively; all but the last component must exist. so like, it chases every link down the whole path, and the last piece is allowed to be a little ghostie πŸ‘» β€” everything before it has to actually exist.
  • -e, --canonicalize-existing β€” canonicalize by following every symlink in every component of the given name recursively; all components must exist. no ghosts allowed, everything has to be real, hold the delusion βœ‹
  • -m, --canonicalize-missing β€” canonicalize by following every symlink in every component of the given name recursively, without requirements on components existence. zero requirements. it simply does not care whether anything exists and honestly? main character energy πŸ‘‘
  • -n, --no-newline β€” do not output the trailing delimiter. so no newline at the end, you get the raw value and nothing else, queen of clean output πŸ‘‘
  • -q, --quiet β€” the page literally just lists it right here with no extra words, so I'm passing that energy along: here it is, it exists, it's the quiet one 🀫
  • -s, --silent β€” suppress most error messages (on by default if POSIXLY_CORRECT is not set). note the "on by default" part β€” that's conditional on that env var, so don't come for me πŸ’…
  • -v, --verbose β€” report error messages (on by default if POSIXLY_CORRECT is set). yep, flip side of the above, same env var, opposite default. the way that POSIXLY_CORRECT is out here deciding your whole personality 😭
  • -z, --zero β€” end each output line with NUL, not newline. perfect for when a newline would ruin your entire life πŸ“
  • --help β€” display this help and exit. the classic escape hatch 🫢
  • --version β€” output version information and exit. for when you just gotta know ⭐
heads up bestie: -s and -v are literally the same vibe-flip of each other, and which one is default depends on whether POSIXLY_CORRECT is set. not me warning you twice, but I'm warning you twice πŸ’€

✍️ AUTHOR ✍️

Written by Dmitry V. Levin. thank you king, we appreciate you πŸ‘‘


πŸ› REPORTING BUGS πŸ›

if something's busted, go tell the actual humans:

please be nice to them, they're doing their best 🌸


πŸ‘€ SEE ALSO πŸ‘€

Full documentation https://www.gnu.org/software/coreutils/readlink β€” or available locally via: info '(coreutils) readlink invocation' (yes, offline bestie, the info page is right there 🧚)

  • Packaged by Ubuntu (9.10-1ubuntu2)
  • Copyright Β© 2026 Free Software Foundation, Inc.
  • License GPLv3+: GNU GPL version 3 or later https://gnu.org/licenses/gpl.html.
  • This is free software: you are free to change and redistribute it.
  • There is NO WARRANTY, to the extent permitted by law.
the NO WARRANTY thing is real, not a bit. it is free software and it comes with no promises, so read that line twice πŸ’œ

and that's the whole page, babe 🌈 slay, you now know readlink better than 90% of people who type it daily. this was GNU coreutils 9.10, from August 2026, aka the READLINK(1) era β€” go canonicalize something cute βœ¨πŸ’–πŸ¦‹

πŸ“¦ where this page comes from