On Sat, 6 Jul 2019 at 01:48, Eric Blake <[email protected]> wrote: > > On 7/5/19 11:31 PM, Eric Blake wrote: > > > If you wish to cat a file named '-' in the current directory, spell it > > './-' or use an absolute path to that file. That's true of all command > > line utilities that treat '-' as stdin (not just cat). > > For more fun, go figure out why: > > grep - - -- > grep [---] > > behave the same, regardless of whether you have a file named '-' in your > current working directory (unless you use shopt -s failglob). And the > rule on using ./- for a file in the current directory also applies to > touch, except there '-' means stdout instead of stdin.
Interesting. POSIX 'touch' manual says that both STDIN and STDOUT aren't used. The unique OPERAND is file: "A pathname of a file whose times shall be modified." None mention to '-'. I suppose that GNU 'touch' relies on this: "Where a utility described in the Shell and Utilities volume of POSIX.1-2017 as conforming to these guidelines is required to accept, or not to accept, the operand '-' to mean standard input or output, this usage is explained in the OPERANDS section. Otherwise, if such a utility uses operands to represent files, it is implementation-defined whether the operand '-' stands for standard input (or standard output), or for a file named -." > > -- > Eric Blake, Principal Software Engineer > Red Hat, Inc. +1-919-301-3226 > Virtualization: qemu.org | libvirt.org > -- Regards, Geyslan G. Bem
