you are viewing a single comment's thread
view the rest of the comments
[–] 18 points 2 years ago (3 children)

“Do one thing and do it very well” is the UNIX philosophy after all; if you’re 99% likely to just create that missing file after you get a file not found error, why should touch waste your time?

  • source
  • parent
  • hideshow 6 child comments
  • [–] 35 points 2 years ago (1 child)

    Because now touch does two things.

    Without touch, we could "just" use the shell to create files.

    : > foo.txt
    
  • source
  • parent
  • hideshow 2 child comments
  • [–] 21 points 2 years ago (1 child)

    Touch does one thing from a “contract” perspective:

    Ensure the timestamp of is

  • source
  • parent
  • hideshow 2 child comments
  • [–] 9 points 2 years ago (1 child)

    But this directly goes against that philosophy, since now instead of changing timestamps it's also creating files

  • source
  • parent
  • hideshow 2 child comments
  • [–] 10 points 2 years ago* (last edited 2 years ago)

    You can pass -c to not create a file, but it does go against the philosophy that it creates them by default instead of that being an option

    EDIT: Looking closer into the code, it would appear to maybe be an efficiency thing based on underlying system calls

    Without that check, touch just opens a file for writing, with no other filesystem check, and closes it

    With that check, touch first checks if the file exists, and then if so opens the file for writing

  • source
  • parent