Jeff King <peff@xxxxxxxx> writes: > I think we actually prefer just: > > >dir/b > > in our tests. The advantages over touch are: > > 1. It is clear that the output will be empty afterwards (whereas with > touch, it might just update the timestamp on an existing file). > > 2. It's faster, since it doesn't require an extra process. > > It's equivalent to ": >dir/b". I think you'll find all three forms in > our test suite, but ">dir/b" is the most common. Another one. 3. Avoiding "touch" when we only want to ensure existence of a file and sticking to ">dir/b" (with or without ":" no-op) lets us reserve "touch" for the intended use of the command. When seeing a "touch", the reader is signalled that the script cares about the timestamp of the target file updated. Among the three, this one is the most important reason from the point of view of making the codebase maintainable in the longer term. By forcing the writer to think when choosing between ">target" and "touch target", we reduce the mental load of the readers. As is true for most things in computer field, read happens more often than write while maintaining the code, and that is why this matters.