this post was submitted on 12 Dec 2023
623 points (95.1% liked)

Memes

45750 readers
1429 users here now

Rules:

  1. Be civil and nice.
  2. Try not to excessively repost, as a rule of thumb, wait at least 2 months to do it if you have to.

founded 5 years ago
MODERATORS
 
  • ISO 8601 is paywalled
  • RFC allows a space instead of a T (e.g. 2020-12-09 16:09:...) which is nicer to read.
you are viewing a single comment's thread
view the rest of the comments
[–] rtxn@lemmy.world 21 points 11 months ago (3 children)
rsync -a "somedir" "somedir_backup_$(date)"

If the date command returns an RFC-3339-formatted string, the filename will contain a space. If, for example, you want to iterate over the files using for d in $(find...) and forget to set $IFS properly, it can cause issues.

[–] lolcatnip@reddthat.com 2 points 11 months ago (1 children)

But $(date) does return a string with spaces, at least on every system I've ever used. And what's so bad about the possibility of spaces in filenames? They're slightly inconvenient in a command line, but I haven't used a commuter this century that didn't support spaces in filenames.

[–] rtxn@lemmy.world 4 points 11 months ago (1 children)

Bro, literally re-read the comment you replied to. It has an example of what might happen.

[–] lolcatnip@reddthat.com 1 points 11 months ago* (last edited 11 months ago) (1 children)

Ok, I just reread it. I don't see what you think I'm missing. You mean an improperly written find command misbehaving? The fact that a different date format could prevent a bug from manifesting doesn't seem like much of an argument.

[–] black0ut@pawb.social 2 points 11 months ago (1 children)

Spaces can exist in filenames. The only problem is that they have to be escaped. As the comment that you reread explained, cat hello world.txt would print the files hello and world.txt. If you wanted to print the file "hello world.txt" you'd either need to quote it (cat "hello world.txt") or escape the space (cat hello\ world.txt)

[–] lolcatnip@reddthat.com 2 points 11 months ago

Oh, the horror!

[–] calcopiritus@lemmy.world 1 points 11 months ago (1 children)

Both arguments are surrounded by ", which should be space-safe.

At least in the shells I use, putting " makes spaces inside paths a non-issue.

[–] rtxn@lemmy.world 1 points 11 months ago

For the rsync command, yes. But this:

for d in $(find . -type d); do
    echo "$d"
done

will process the space-separated parts of each path as separate items. I had to work around this issue just two days ago, it's an obscure thing that not everyone will keep in mind.