Post AjSjX4gfUNwemG77js by mattdm@hachyderm.io
 (DIR) More posts by mattdm@hachyderm.io
 (DIR) Post #AjSjX2jmjpFYjLYaJs by mcc@mastodon.social
       2024-06-30T16:15:35Z
       
       0 likes, 0 repeats
       
       Is there a way to do `mv`, in either linux or Perl, that will fail if I try to copy a file over another file?In the mv manpage, I find a `-n` or `--no-clobber` option which does indeed refuse to replace file A with file B. But it is a silent failure. $? is 0 after I run an unsuccessful `mv -n`.
       
 (DIR) Post #AjSjX3fvFfkpdel0wC by mattdm@hachyderm.io
       2024-06-30T16:31:24Z
       
       0 likes, 0 repeats
       
       @mcc Update to (at least) coreutils 9.2, or use a distro which provides that.With that version, mv -n will print an error and return 1 if a file is skipped. (Previously, it just printed nothing to indicate it was doing nothing. Insert Drake meme here.)
       
 (DIR) Post #AjSjX4gfUNwemG77js by mattdm@hachyderm.io
       2024-06-30T16:34:36Z
       
       0 likes, 0 repeats
       
       @mcc There is a new `--update none` option to get the old noclobber behavior, if you want it.tbh I'm surprised 1) they made what could be a breaking change and 2) to my knowledge there has been no "you broke my scripts" outcry. Although probably the second can be found if I look hard enough.Also, apparently posix only specifies -i and -f. Because, sure.
       
 (DIR) Post #AjSjX5drwHIfjroP0y by mattdm@hachyderm.io
       2024-06-30T16:36:19Z
       
       0 likes, 0 repeats
       
       @mcc IMHO good for the coreutils maintainers for making some of this stuff make more sense after all of these years.But I'll wait for the "they hate Unix!" crowd to show up.
       
 (DIR) Post #AjSjX6QR1i9GAUXBiK by ljrk@todon.eu
       2024-06-30T16:46:37Z
       
       0 likes, 0 repeats
       
       @mattdm @mcc Unfortunately `-n` doesn't seem to be race-free though :/https://unix.stackexchange.com/questions/248544/mv-move-file-only-if-destination-does-not-exist/248547?noredirect=1#comment428238_248547With that in mind (if still true), I don't see any worth in a `-n` flag (invoking the "it's not UNIX" meme here :D).  Then again, while there are many very bad options added by the GNU project if you ask me (GNU/tar's --checkpoint-action flag springs to mind), but this'd be a really useful flag in principle.
       
 (DIR) Post #AjSjX7E43BqaePkp4S by mattdm@hachyderm.io
       2024-06-30T16:51:25Z
       
       0 likes, 0 repeats
       
       @ljrk @mcc Haven't tested, but I believe that's been fixed sometime after 2015. From the release notes for 8.30 (2018):```  'mv -n A B' no longer suffers from a race condition that can  overwrite a simultaneously-created B.  This bug fix requires  platform support for the renameat2 or renameatx_np syscalls, found  in recent Linux and macOS kernels.  As a side effect, 'mv -n A A'  now silently does nothing if A exists.  [bug introduced with coreutils-7.1]```
       
 (DIR) Post #AjSjX88QfcvxTE7pvU by mattdm@hachyderm.io
       2024-06-30T16:52:40Z
       
       0 likes, 0 repeats
       
       @ljrk @mcc Also this explains the `mv -n` silence when I tested on RHEL 7. :)
       
 (DIR) Post #AjSjX8k0PuzXLlhqUq by mattdm@hachyderm.io
       2024-06-30T16:53:23Z
       
       0 likes, 0 repeats
       
       @ljrk @mcc Anyway, everything is terrible.*switches to plan9*
       
 (DIR) Post #AjSjX9iylDlSOsEXXE by mattdm@hachyderm.io
       2024-06-30T18:10:20Z
       
       0 likes, 0 repeats
       
       @ljrk @mccMeanwhile on LWN... https://lwn.net/SubscriberLink/979524/f93c7f46307f3415/
       
 (DIR) Post #AjSjXAbDVZ9L75br4i by mcc@mastodon.social
       2024-06-30T18:11:54Z
       
       1 likes, 0 repeats
       
       @mattdm @ljrk
       
 (DIR) Post #AjSkPDs5YgkctoH96m by ljrk@todon.eu
       2024-06-30T18:53:24Z
       
       2 likes, 2 repeats
       
       @mcc @mattdm
       
 (DIR) Post #AjSuC6XAWiK1v4sEwC by mrsaturday@shitposter.world
       2024-06-30T21:08:54.473597Z
       
       0 likes, 0 repeats
       
       @ljrk @mcc