Re: shred bug? [was: Unidentified subject!]
On Sun 11 Feb 2024 at 09:16:00 (-0600), David Wright wrote:
> On Sun 11 Feb 2024 at 09:54:24 (-0500), Greg Wooledge wrote:
> > On Sun, Feb 11, 2024 at 03:45:21PM +0100, tomas@tuxteam.de wrote:
> > > Still there's the discrepancy between doc and behaviour.
> >
> > There isn't. The documentation says:
> >
> > SYNOPSIS
> > shred [OPTION]... FILE...
> >
> > DESCRIPTION
> > Overwrite the specified FILE(s) repeatedly, in order to make it harder
> > for even very expensive hardware probing to recover the data.
> >
> > If FILE is -, shred standard output.
> >
> > In every sentence, the word FILE appears. There's nothing in there
> > which says "you can operate on a non-file".
> >
> > Once you grasp what the command is *intended* to do (rewind and overwrite
> > a file repeatedly), it makes absolutely perfect sense that it should
> > only operate on rewindable file system objects.
> >
> > If you want it to write a stream of data instead of performing its normal
> > operation (rewinding and rewriting), that's a new feature.
> >
> > If you'd prefer the documentation to say explicitly "only regular files
> > and block devices are allowed", that would be an upstream documentation
> > *clarification* request.
>
> Perhaps info puts it better?
… but not much. For me, "standard output" is /dev/fd/1, yet it seems
unlikely that anyone is going to use >&1 in the manner of the example.
I might write something like: "The option ‘-’ shreds the file specified
by the redirection ‘>&N’", though there could be a better name for ‘>&N’.
> A FILE of ‘-’ denotes standard output. The intended use of this is
> to shred a removed temporary file. For example:
>
> i=$(mktemp)
> exec 3<>"$i"
> rm -- "$i"
> echo "Hello, world" >&3
> shred - >&3
> exec 3>-
I can see that the last line truncates the "anonymous" file, but where
is that construction documented¹, and how would one parse the syntax
elements FD > - to make them mean truncate?
> However, the command ‘shred - >file’ does not shred the contents of
> FILE, since the shell truncates FILE before invoking ‘shred’. Use
> the command ‘shred file’ or (if using a Bourne-compatible shell) the
> command ‘shred - 1<>file’ instead.
¹ the string ">-" doesn't appear in /usr/share/doc/bash/bashref.pdf,
ver 5.1, for example.
Cheers,
David.
Reply to: