Post by Greg ReagleWould sbase suck less if the program head, which is currently a C program of 77 lines, were replaced with something like
#!/bin/sh
sed "$1"q
I know that it would need to be a bit more elaborate than that to handle the -n flag, but still. Is there any advantage to having a separate C program?
It's for performance or/and convenience reasons. It could be a shell
script.
head is a utility as defined by POSIX
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_22
A utility can be a shell script and there shouldn't be a difference in
behavior.
I think it's easier to write and maintain a POSIX compliant head when
it's written in C, because it has to handle -n option and multiple files
with a special output header.
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/head.html
Post by Greg ReagleAlthough it is possible to simulate head with sed 10q for a single
file, the standard developers decided that the popularity of head on
historical BSD systems warranted its inclusion alongside tail.
Many early versions of Unix did not have this command, and
You could write POSIX compliant head in POSIX compliant shell and it
would be correct.
Of course if you don't need to be POSIX compliant you could drop head
altogether.
I would say most people write these tools in C for performance reasons.
For example look at GNU cat code.
Regards,
mat