Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 25 Sep 2003 03:42:50 GMT
From:      Mark <admin@asarian-host.net>
To:        <freebsd-questions@freebsd.org>
Subject:   Re: Re:Re: Cat a directory
Message-ID:  <200309250342.H8P3GORP067610@asarian-host.net>
References:  <JA8AAAAAAgH8RAABYQADV7qgzdhU@master.hel.fi><20030919083627.K99065@wonkity.com><JA8AAAAAAgMHPAABYQADV7qgzdhU@master.hel.fi> <20030922162119.GA78498@wopr.caltech.edu>

next in thread | previous in thread | raw e-mail | index | archive | help
----- Original Message -----
From: "Matthew Hunt" <mph@astro.caltech.edu>
To: "Karlsson Mikael HKI/SOSV" <mikael.karlsson@hel.fi>
Cc: <freebsd-questions@freebsd.org>
Sent: Monday, September 22, 2003 6:26 PM
Subject: Re: Re:Re: Cat a directory

> "cat /bin" on Solaris 9 does exactly the same thing as on FreeBSD; shows
> the contents of the directory, just like you're asking it to. Just because
> you can't fathom a use for this behavior doesn't mean it's wrong. If you
> don't want to see it, don't ask "cat" to show it to you.

Answers like this are not uncommon. I guess because it evokes the old "This
separates the men from the boys" attitude.

However, the purpose of "cat" is to write the contents of a file to STDOUT.
And yes, in UNIX pretty much everything is considered a file. But that does
not change the fact that people do not experience a directory as a file, and
in their use of language also clearly differentiate between the two. You
too. Besides, for the regular use of writing the contents of a directory to
STDOUT, "ls" was created.

Using "cat /bin" is a poor example, because everybody KNOWS /bin is a
directory. But how about using a more realistic example? Say, "cat
/usr/libexec/sendmail"? That happens to be a directory, but could easily be
mistaken for a regular file (when found in a find output, for instance). And
then a lot of crap scrolls through your terminal, which is potentially
DANGEROUS. Just because you cannot fathom a legitimate situation in which a
cat on a directory was unexpected and unintentional, does not mean that
situation never occurs.

I would like to see a switch added to cat, like "-d", which specifically
allows it to operate on directories too, for that once-in-a-million chance I
actually need a hex dump on the directory as file. In fact, that behavior is
already incorporated in the "rm" command:

The options are as follows:

  -d Attempt to remove directories as well as other types of files.

So, in like fashion for "cat":

  -d Attempt to write the raw contents of a directory too.

- Mark



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200309250342.H8P3GORP067610>