The Unix Heritage Society mailing list
 help / color / mirror / Atom feed
From: Douglas McIlroy <douglas.mcilroy@dartmouth.edu>
To: TUHS main list <tuhs@minnie.tuhs.org>
Subject: [TUHS] head/sed/tail (was The Unix shell: a 50-year view)
Date: Wed, 14 Jul 2021 22:38:06 -0400	[thread overview]
Message-ID: <CAKH6PiWDnDBEE9vWRU+6kAuEcMNFdpJ9tiv0=9VUr-LMJRRBbw@mail.gmail.com> (raw)

This somewhat stale note was sent some time ago, but was ignored
because it was sent from an unregistered email address.

> And if the Unix patriarchs were perhaps mistaken about how useful
> "head" might be and whether or not it should have been considered
> verboten.

Point well taken.

I don't know which of head(1) and sed(1) came first. They appeared in
different places at more or less the same time. We in Research
declined to adopt head because we already knew the idiom "sed 10q".
However one shouldn't have to do related operations in unrelated ways.
We finally admitted head in v10.

Head was independently invented by Mike Lesk. It was Lesk's
program that was deemed superfluous.

Head might not have been written if tail didn't exist. But, unlike head,
tail strayed from the tao of "do one thing well". Tail -r and tail -f are
as cringeworthy as cat -v.

-f is a strange feature that effectively turns a regular file into a pipe
with memory by polling for new data, A clean general alternative
might be to provide an open(2) mode that makes reads at the current
file end block if some process has the file open for writing.

-r is weird because it enables backwards reading, but only as
limited by count. Better would be a program, say revfile, that simply
reads backwards by lines. Then tail p  has an elegant implementation:
       revfile p | head | revfile

Doug

             reply	other threads:[~2021-07-15  2:38 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-15  2:38 Douglas McIlroy [this message]
2021-07-15  4:19 ` arnold
2021-07-15  4:25   ` Adam Thornton
2021-07-15  7:20   ` Thomas Paulsen
2021-07-15 14:28 ` Theodore Y. Ts'o
2021-07-15 22:29 ` Bakul Shah
2021-07-15 15:44 Norman Wilson
2021-07-15 16:54 Nelson H. F. Beebe
2021-07-15 19:01 Norman Wilson
2021-07-15 19:27 ` Clem Cole
2021-07-15 19:28   ` Clem Cole
2021-07-15 19:34   ` Warner Losh
2021-07-16  7:38     ` arnold
2021-07-16 16:09       ` Warner Losh
2021-07-16  8:05   ` Lars Brinkhoff
2021-07-16 14:19     ` Clem Cole
2021-07-17  0:34       ` Charles Anthony
2021-07-15 21:26 Paul Ruizendaal
2021-07-15 22:00 Douglas McIlroy
2021-07-15 22:12 ` John Cowan
2021-07-15 22:26 Nelson H. F. Beebe
2021-07-15 23:18 ` Jim Davis
2021-07-16  0:02   ` John Floren
2021-07-16  1:02     ` Nelson H. F. Beebe
2021-07-16  8:27     ` Lars Brinkhoff
2021-07-16 15:28       ` John Floren
2021-07-16  0:02 ` Clem Cole
2021-07-16  0:25   ` Nelson H. F. Beebe
2021-07-16  8:50     ` Lars Brinkhoff
2021-07-16 12:09 Douglas McIlroy
2021-07-16 14:32 ` Bakul Shah
     [not found] <CAKH6PiW58PDPb5HRi12aKE+mT+O8AjETr9R51Db6U3KcEp_KkA@mail.gmail.com>
2021-07-16 14:17 ` Nelson H. F. Beebe
2021-07-16 16:13   ` Theodore Y. Ts'o
2021-07-18 20:07 Douglas McIlroy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAKH6PiWDnDBEE9vWRU+6kAuEcMNFdpJ9tiv0=9VUr-LMJRRBbw@mail.gmail.com' \
    --to=douglas.mcilroy@dartmouth.edu \
    --cc=tuhs@minnie.tuhs.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).