TAIL(1)

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

πŸ’– TAIL(1) πŸ’–

okay so welcome to the TAIL(1) manual page, bestie β€” this is the one, this is the icon, and by the end you're gonna be tailing files like it's your whole personality πŸ’…


✨ NAME ✨

tail β€” output the last part of files πŸ“


🌸 SYNOPSIS 🌸

tail [OPTION]... [FILE]...

πŸ¦‹ DESCRIPTION πŸ¦‹

Okay so here's the vibe: tail prints the last 10 lines of each FILE straight to standard output. That's it. That's the whole gig. πŸ‘‘

If you hand it more than one FILE, it precedes each one with a header telling you the file name β€” so you never get confused about which file's drama you're reading.

With no FILE at all, or when FILE is -, it reads from standard input. Yes, the classic - move. iconic.

ngl mandatory arguments to long options are mandatory for short options too β€” that's just how the family works, no negotiating.
  • -c, --bytes=[+]NUM β€” outputs the last NUM bytes; or if you do -c +NUM it outputs starting with byte NUM of each file ✨
  • --debug β€” tells you which --follow implementation is being used πŸ‘€
  • -f, --follow[={name|descriptor}] β€” outputs appended data as the file grows 🌱 if you don't give the option argument at all, it just means descriptor
  • -F β€” literally the same as --follow=name --retry, fr fr
  • -n, --lines=[+]NUM β€” outputs the last NUM lines instead of the last 10; or use -n +NUM to skip NUM-1 lines at the start πŸ’«
  • --max-unchanged-stats=N β€” with --follow=name, it reopens a FILE that hasn't changed size after N (default 5) iterations, just to see if it got unlinked or renamed β€” which is, like, the usual case of rotated log files; with inotify this option is rarely useful 🫠
  • --pid=PID β€” with -f, it exits after PID no longer exists; you can repeat this to watch multiple processes, no cap πŸ‘―
  • -q, --quiet, --silent β€” never outputs headers giving file names, shhh 🀫
  • --retry β€” keeps trying to open a file if it's inaccessible. persistent queen πŸŽ€
  • -s, --sleep-interval=N β€” with -f, sleeps for approximately N seconds (default 1.0) between iterations; with inotify and --pid=P, it checks process P at least once every N seconds 😴
  • -v, --verbose β€” always outputs headers giving file names. main character behavior, honestly 🎬
  • -z, --zero-terminated β€” line delimiter is NUL, not newline πŸ•³οΈ
  • --help β€” displays this help and exits πŸ’–
  • --version β€” outputs version information and exits ⭐

NUM may have a multiplier suffix, and yes you're gonna want these: b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024, GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y, R, Q. Binary prefixes can be used too: KiB=K, MiB=M, and so on. 🌈

With --follow (-f), tail defaults to following the file descriptor, which means that even if a tail'ed file is renamed, tail will continue to track its end. Sounds great, right? BUT β€” this default behavior is not desirable when you actually want to track the real name of the file, not the file descriptor (e.g., log rotation, the eternal struggle). Use --follow=name in that case. That causes tail to track the named file in a way that accommodates renaming, removal and creation. slay πŸ’…


πŸ‘‘ AUTHOR πŸ‘‘

Written by Paul Rubin, David MacKenzie, Ian Lance Taylor, and Jim Meyering. the founding fathers of tails, we stan 🫢


πŸ’€ REPORTING BUGS πŸ’€


πŸ”₯ SEE ALSO πŸ”₯


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.


and that's the whole page, bestie β€” this was GNU coreutils 9.10, dated August 2026, and it's giving TAIL(1) in the most immaculate way possible. mwah πŸ’‹πŸ’–

πŸ“¦ where this page comes from