On Mon, Mar 10, 2014 at 09:22:39PM +0100, Paul Onyschuk wrote:
On Mon, 10 Mar 2014 20:39:08 +0100
Szymon Olewniczak szymon.olewnic...@rid.pl wrote:
But having so many individual programs is more harder to use that just
one (we need to run more commands), so reasonable would be to combine
all this commands to one script which would do all this work
automaticaly. So what solution would be better in your opinion? When
we should use shell scripts and when write new C programs to achieve
our goals?
My mail probably will be bounced, but anyway.
It (pipes or lack of them) can be abused either way. Example of way too
many command line flags (GNU ls):
$ ls --help | awk '/^ {2,6}-/{i++} END{print i}'
58
Yeah, you just noticed that the GNU guys always do way too much.
Yet you won't likely use more than a dozen options offered by ls ever
(and fewest on daily basis). Those rare cases, when you need something
specialized could be solved by sed/awk and other filters. Still they
somehow managed to squeeze all those flags there - someone really hates
pipes.
The more I read of POSIX, the more I think those options are only there
because they were easy to add to some specific implementations. Which,
of course, locks the specification ever more to fewer and fewer
implementations, and when you try to do something really crazy and new,
like using a new language (go) or a new paradigm (haskell) then good
luck getting that to conform.
Apart from that, even using C - as was ordained by Saints KR - you have
to jump through some hoops to conform to SUSv3. That's why sbase and
ubase don't even try.
Counter example would be man(1) command (this is personal opinion).
Some implementation are doing something similar to that:
$ zcat some-manpage.1.gz | eqn | grap | pic | tbl | vgrind | refer \
| troff | more
This is running every time when you type man some-manpage. Filter
approach of *roff made sense, when it was used for creating documents
for printing (and it was often most CPU intensive command on the box
according to some accounts).
You forgot the
find $MANPATH -name 'some-manpage.[0-9].*'
But then, this is really necessary, isn't it? I mean, you can use
catpages, which are basically preprocessed manpages, but those aren't
taylored to the terminal you are running it on, and usually they have
page headers and footers that distract when reading.
Apart from that, I have yet to see a better documentation system than
man.
Ciao,
Markus