I’m working on a some materials for a class wherein I’ll be teaching some young, wide-eyed Windows nerds about Linux and we’re including a section we’re calling “foot guns”. Basically it’s ways you might shoot yourself in the foot while meddling with your newfound Linux powers.
I’ve got the usual forgetting the .
in lines like this:
$ rm -rf ./bin
As well as a bunch of other fun stories like that one time I mounted my Linux home folder into my Windows machine, forgot I did that, then deleted a parent folder.
You know, the war stories.
Tell me yours. I wanna share your mistakes so that they can learn from them.
Fun (?) side note: somehow, my entire ${HOME}/projects
folder has been deleted like… just now, and I have no idea how it happened. I may have a terrible new story to add if I figure it out.
Not me but a colleague of mine wrote a bash script that had something like this and ran it on a server:
FOO="/home/bar" ... Many lines later ... rm -rf $FOOT/*
Reminder that bash will resolve uninitiated variables to the empty string.
Luckily he halted the process after it had only nuked /boot and /bin. If it had gotten to /var and the mounted data storage within, we would have been in trouble
Do you work at Valve?
Always use
set -eu
Yeah if you don’t put bash in European mode, it is a lot more dangerous.
Ahhhh why not anything in
/tmp
or better${TMPDIR:-/tmp}
or bestmktemp