TAIL(1)
๐ TAIL(1) โ the last-lines queen ๐
okay bestie, welcome to tail(1), the User Commands era of the manual pages, and honestly? she's iconic. she shows you the end of things. the finale. the last word. main character energy but make it a file ๐
โจ NAME โจ
tail โ output the last part of files ๐
๐ธ SYNOPSIS ๐ธ
tail [OPTION]... [FILE]...
๐ฆ DESCRIPTION ๐ฆ
so basically: print the last 10 lines of each FILE to standard output. if you hand her more than one FILE, she's gonna precede each one with a header giving the file name, because she's polite like that โจ
with no FILE, or when FILE is -, she reads standard input. classic. no cap ๐ซถ
also, mandatory arguments to long options are mandatory for short options too. yes bestie, the rules apply to everyone ๐
๐ the options, one by one, no skipping, we don't do that here ๐
-c,--bytes=[+]NUMโ output the lastNUMbytes; or use-c +NUMto output starting with byteNUMof each file ๐--debugโ indicate which--followimplementation is used ๐-f,--follow[={name|descriptor}]โ output appended data as the file grows; an absent option argument means'descriptor'๐ฑ-Fโ same as--follow=name --retry๐-n,--lines=[+]NUMโ output the lastNUMlines, instead of the last 10; or use-n +NUMto skipNUM-1lines at the start โจ--max-unchanged-stats=Nโ with--follow=name, reopen aFILEwhich has not changed size afterN(default5) iterations to see if it has been unlinked or renamed (this is the usual case of rotated log files); with inotify, this option is rarely useful ๐--pid=PIDโ with-f, exit afterPIDno longer exists; can be repeated to watch multiple processes ๐ง-q,--quiet,--silentโ never output headers giving file names ๐คซ--retryโ keep trying to open a file if it is inaccessible ๐-s,--sleep-interval=Nโ with-f, sleep for approximatelyNseconds (default1.0) between iterations; with inotify and--pid=P, check processPat least once everyNseconds ๐ด-v,--verboseโ always output headers giving file names ๐ฃ-z,--zero-terminatedโ line delimiter isNUL, not newline โญ--helpโ display this help and exit ๐ซถ--versionโ output version information and exit ๐
๐ข NUM got multipliers, bestie ๐ข
NUM may have a multiplier suffix: 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. the way she just keeps going ๐ญ
๐ the --follow lore (read this one fr fr) ๐
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. this default behavior is not desirable when you really want to track the actual name of the file, not the file descriptor (e.g., log rotation). use --follow=name in that case. that causes tail to track the named file in a way that accommodates renaming, removal and creation. periodt. ๐
lowkey important: if you're tailing a rotated log and it's acting cursed, this paragraph is your bestie. --follow=name is the vibe check you needed.
๐ AUTHOR ๐
Written by Paul Rubin, David MacKenzie, Ian Lance Taylor, and Jim Meyering. kings, honestly ๐
๐ REPORTING BUGS ๐
Report bugs to: <bug-coreutils@gnu.org>. Report any translation bugs to: <https://translationproject.org/team/>. GNU coreutils home page: <https://www.gnu.org/software/coreutils/> General help using GNU software: <https://www.gnu.org/gethelp/>
๐ COPYRIGHT ๐
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.
๐ SEE ALSO ๐
Full documentation <https://www.gnu.org/software/coreutils/tail> or available locally via: info '(coreutils) tail invocation'
and that's the whole page, bestie ๐ซถ this one's from GNU coreutils 9.12, dated September 2026 โ so like, go forth and read the last 10 lines of everything. slay ๐โจ๐ฆ
๐ฆ where this page comes from
- arch rolling: coreutils 9.12-2 ยท GPL-3.0-or-later AND GFDL-1.3-or-later
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms