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`.)
'--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.
This 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.
`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.
> 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
(On Mac and other systems with BSD versions of tools, `--interactive` is `-i` and `--force` is `-f`.)