Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

It's more likely they wanted to remove all hidden directories from their home directory, and ran `rm -rf .*`.

Under some shells (eg bash) that will expand to include `..` and `.`.



The last time it happened to me, it was caused by a space. Instead of rm -rf toto٭, I had rm -rf toto ٭.

Hopefully, it was not at the root directory and we have frequent snapshots.


I have totally never done that. If I had done that, I might have been saved by a lack of permissions. Like if I was on a mounted external drive, so not in my home directory and it didn't get too far.

Edit: What would have been much more worse, if I had done it, would have been

    rm -rf ~ /foo
instead of

    rm -rf ~/foo


Such a bug was in an Nvidia driver install script a few years ago:

  rm -rf /usr /lib/modules/something/something


Bumblebee specifically, https://github.com/MrMEEE/bumblebee-Old-and-abbandoned/commi... is the fix. Pretty sure Steam had the same issue early in their linux release, probably lots of other programs too.


Yes, I specifically remember a lot of hub bub about Steam deleting entire home directories if a path was input incorrectly. Glad that never bit me.


And also iTunes, back in the early days of OS X:

https://www.wired.com/2001/11/glitch-in-itunes-deletes-drive...


This is why I never use bash for scripting, and opt for Ruby instead.

You can use the `Pathname` class to treat paths as objects, which you can concatenate only valid paths with. Aside from obviously all the other sanity-saving features.


Same. Ruby isn't my preference, but I avoid bash scripting whenever possible. I see very little need to use it when practically every machine requires Python, Ruby, and other high-level dynamic languages as pre-requisite for some basic software that's included by default. I respect bash, but it's from a bygone time. Why deal with the esoteric one-character test operators, the nitpicky spacing issues, etc? Use modern, readable, testable code. So much nicer and easier to read and work with that way.

I'd love to see someone deploy a Python or Ruby-based shell. I'm sure these are available, but they're not widely used.


Bash may be worse than Ruby or Python for scripting, but it's far better as an interactive shell.

And I'm quite happy not having shell use hold back evolution of Ruby or Python, and not having drama like Ruby 1.8 -> 1.9 or Python 2.x -> 3.x affecting shell use.


That's mortifying!


Or, maybe you forget which directory you are in, and delete the wrong one that way: `rm -rf ../*` when you think you're in `/mnt/work/grkvlt/tmp` but are actually in `/mnt/work/grkvlt` at the time.


or perhaps it was the dreaded "rm -rf ${DIR}/*" when $DIR is not defined.


Safe shell coding tip #10451: Variables containing directories always have to end in a slash, and paths may never be built using variables and slashes.


Why is that more likely?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: