6 ms·
Not really, a lot of novice unix users are of the habit of removing files with -rf switch. I cringe everytime I see it. The command "rm -rf ~/blue/" is just a
by graylights 12y ago
Not really, a lot of novice unix users are of the habit of removing files with -rf switch. I cringe everytime I see it.
The command "rm -rf ~/blue/" is just a single space key from being equivalent to "rm -rf /" with "rm -rf ~/blue /"
- jonreem 12y agoOn any modern system it's actually "sudo rm -rf / --no-preserve-root" and then entering your password while staring at the command. "rm -rf ~/blue /" will not come close to deleting / unless you are in the habit of running every command as sudo, even ignoring the presence of --no-preserve-root
- daurnimator 12y agoExcept when: (these are terrible lessons to learn) 1. You type it into the wrong system (D'oh) 2. You have run `mount --bind / /somewhere/else` then `rm -rf /somewhere` a week later :(
- colanderman 12y agoIt boggles my mind that --one-file-system is not the default :/
- jfb 12y agoMuch, much, much the worse is "rm -rf ~ /blue". I don't give a crap about 99% of the stuff outside of $HOME, but of course, the stuff in $HOME is the stuff that's trivial to destroy.
- lloeki 12y agoYou're missing the point: $ cd dir where there are source files and temp files $ rm *.tmp # or so you think '.tmp not found' # too bad
- artursapek 12y agoMore easily, "rm -rf ~" with a premature "Enter"
- corobo 12y agodo the -rf after the directory to avoid this in future Premature enter just results in: [web@server /]$ rm ~ rm: cannot remove `/home/web': Is a directory
- daurnimator 12y ago> Not really, a lot of novice unix users are of the habit of removing files with -rf switch. I cringe everytime I see it. Every few days I remind myself of this.... then I have to delete another directory with a git repository in it, and end up add the -f in again
- couchand 12y agoI run into this all the time, too. Now my -rf usage is almost always wrapped by this: rmgit() { git status read -p "Are you sure? " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]] then rm .git -rf fi }
- anon4 12y agoI think this would be a bit better for interactive cases. Note: written just now, I haven't actually felt the need for this safeguard... yet. rmrf() { (echo "The following files are going to be deleted!!!" for FILE in "$@"; do echo "<<<" "$FILE" ">>>" done) | less read -p "Are you sure? " -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]] then rm -rf "$@" fi }
- colanderman 12y agoDoesn't help against network filesystems mounted in subdirectories. --one-file-system (which really ought to be the default) prevents this.
- mandalar12 12y agoWhat would be the "good" alternative ? I often tries "rmdir" or "rm -r" if the directory is not empty and very often there are some "protected files" so I add -f. Thus it happens that I directly lauch "rm -rf".
- couchand 12y agoWatch it fail first, verify that the failure makes sense, check to see if there's a way to delete one file with -f before deleting the rest with -r. Use -rf only as a last resort, and only by appending the f to an already-failed command whose syntax you've validated.
- krylon 12y agoHehe, I did something like that once, except that I typed "rm -rf ~ /blue/". There was no /blue/, but I managed to wipe out my home directory, and I did not have a backup. :-| It was on my personal machine, so at least I did not delete anybody else's files, but I still got burned hard enough to learn a valuable lesson.