4 ms·
Last week I nuked my home directory by running `rm -rf *` mistakenly from the wrong directory. Lost around 2-3 hours to re-install and re-clone. Accidents will
by pcwelder 2y ago
Last week I nuked my home directory by running `rm -rf *` mistakenly from the wrong directory. Lost around 2-3 hours to re-install and re-clone.
Accidents will happen, disaster recovery is needed notwithstanding misaligned AI.
IMO once you're really ready for the worst, productivity from yolo mode AI assistance surpasses the downsides.
- jmholla 2y agoI have `rm` aliased: alias rm="rm --interactive" Really helps avoid these kinds of situations. I do the same thing with `cp`, but unlike `rm`, `--force` doesn't actually undo `--interactive` in `cp` so I have to call `cp` directly (e.g., `/usr/bin/cp`) when I don't want to deal with the prompts. (On Mac and other systems with BSD versions of tools, `--interactive` is `-i` and `--force` is `-f`.)
- em-bee 2y ago'--force' does more than undoing '--interactive'. '--force' will remove a file even if the permissions of that file are set to read only (if you own the file or directory): > touch foo > ls -l -rw-r--r--. 1 foo foo 0 Mar 24 05:54 foo > chmod a-w foo > ls -l -r--r--r--. 1 foo foo 0 Mar 24 05:54 foo > rm foo rm: remove write-protected regular empty file 'foo'? n > rm -i foo rm: remove write-protected regular empty file 'foo'? n > rm -i -f foo > my consequence is that i never alias 'rm' to default to '-i', because 'rm -f' is dangerous. instead i type 'rm -i' manually every time, and remove the '-i' if i don't want it.
- jmholla 2y agoThis is true, but as you note, `rm -i` shows the same warning for write-protected files. My alias is intended to provide the same protection against accidental deletions of non-write-protected files. I only pass the `-f` when I'm certain I know what I'm doing. If I still want the raw behavior as you called out, I can use the full path to `rm`. But for me, I've unintentionally lost more files that I have write permissions on through bad rm commands than any lost from my alias with `-f`, which I can't recall having lost any with.
- em-bee 2y ago`rm -i` shows the same warning for write-protected files' because for write-protected files '-i' is a no-op. you are probably right that the risk of accidentally deleting a write protected file is very small, simply because using those permissions is very rare. but there is another problem i have with using an alias, this may not apply to you, but i work on multiple machines and in containers, and i keep creating new ones for projects, that there is a high risk that i forget to set the alias. so every time i use rm i can't be sure, did i set the alias, or did i not. and if i rely on 'rm' always asking me, then it makes me complacent. ah, i don't have to pay attention because rm will ask me anyways. writing 'rm -i' explicitly every time makes it much easier to see that '-i' is indeed being invoked. it makes me pay attention and i know that i am running the command that i want. it's three extra characters to type each time, but it has become muscle memory. i don't think about it anymore, except when verifying what i typed. the '-i' just has to be there.
- jmholla 2y ago> because for write-protected files '-i' is a no-op. On my machine, `rm -i` with a yes to a read-only file does delete that file. But maybe I'm misunderstanding what you mean by it being a no-op. > touch foo > chmod 400 foo > ls -l total 0 -r-------- 1 joshua joshua 0 Mar 26 00:06 foo > rm -i foo rm: remove write-protected regular empty file 'foo'? y > ls -l total 0 > but there is another problem i have with using an alias, this may not apply to you, but i work on multiple machines and in containers, and i keep creating new ones for projects, that there is a high risk that i forget to set the alias. so every time i use rm i can't be sure, did i set the alias, or did i not. and if i rely on 'rm' always asking me, then it makes me complacent. ah, i don't have to pay attention because rm will ask me anyways. Oh yea. I've definitely run into this. Luckily, a large percentage of my stuff off my dev machine is backed by code, so I can usually just throw things away and bring them all the way back up. > writing 'rm -i' explicitly every time makes it much easier to see that '-i' is indeed being invoked. it makes me pay attention and i know that i am running the command that i want. it's three extra characters to type each time, but it has become muscle memory. i don't think about it anymore, except when verifying what i typed. the '-i' just has to be there. Ha. I know that feeling, and this is probably something I should've let happen to me with these dangerous commands. Would definitely make my experience with cp a lot better. I have so many aliases I've made to make my life easier, but I just end up typing in the full command every time. :D