(or: “Musings on the single-minded, relentless pursuit of perfection”…)
Saving this thought to possibly build upon for later, adapted from something I just posted to Facebook:
I finally found a question on Stack Exchange that is right square in my wheelhouse, and was able to contribute an answer with which I am completely satisfied, because I feel it is both better and more thoroughly considered and researched than the existing answers (because it is something I use almost every day, literally; so it is refined over years of usage)! It might seem silly — even useless — to an impartial observer, but I feel like this moment justifies my endless pursuit of perfection, never being satisfied with “good enough” and always chipping away at minor annoyances, trying to improve upon the status quo.
I see all these people saying to use `tail -f`, but I do not like the limitations of that! My favorite method of searching a file while also watching for new lines (e.g., I commonly work with log files to which are appended the redirected output of processes executed periodically via cron jobs) is:
`tail -Fn+0 /path/to/file|grep searchterm`
This assumes GNU tail and grep.
Supporting details from the tail manpage (GNU coreutils, mine is v8.22) [https://www.gnu.org/software/coreutils/manual/coreutils.html] :
> -F same as –follow=name –retry
> -n, –lines=K
> output the last K lines, instead of the last 10; or use -n +K to output starting with the Kth
> If the first character of K (the number of bytes or lines) is a >’+’, print beginning with the Kth item from the start of each file
>,otherwise, print the last K items in the file. K 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.
> 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.
So, the tail portion of my command equates to `tail –follow –retry –lines=+0`, where the final argument directs it to start at the beginning, skipping zero lines.