this post was submitted on 17 Mar 2024
1164 points (97.5% liked)

Programmer Humor

19207 readers
1630 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 1 year ago
MODERATORS
 
you are viewing a single comment's thread
view the rest of the comments
[–] BestBouclettes@jlai.lu 90 points 6 months ago* (last edited 6 months ago) (1 children)

The intended use of touch is to update the timestamp right?

[–] bjoern_tantau@swg-empire.de 100 points 6 months ago (2 children)

Yeah. It could just as well have issued a file not found error when you try to touch a nonexistent file. And we would be none the wiser about what we're missing in the world.

[–] 4am@lemm.ee 18 points 6 months 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?

[–] 0x0@lemmy.dbzer0.com 35 points 6 months ago (1 children)

Because now touch does two things.

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

: > foo.txt
[–] deegeese@sopuli.xyz 21 points 6 months ago (1 children)

Touch does one thing from a “contract” perspective:

Ensure the timestamp of is

[–] dan@upvote.au 15 points 6 months ago (2 children)

Systemd also does one thing from a contract perspective: run your system

[–] emptiestplace@lemmy.ml 4 points 6 months ago
[–] dukk@programming.dev 1 points 6 months ago

Does it do it well, though?

[–] stebo02@lemmy.dbzer0.com 20 points 6 months ago

with this logic, any command that moves, copies or opens a file should just create a new file if it doesn't exist

and now you're just creating new files without realising just because of a typo

[–] Kusimulkku@lemm.ee 9 points 6 months ago (1 children)

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

[–] kautau@lemmy.world 10 points 6 months ago* (last edited 6 months 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

[–] BestBouclettes@jlai.lu 9 points 6 months ago

If you touch -c it should work I guess