Safety tips for dangerous commands in bash
If you are a command line interface addict (like me), then you might as well have accidentally run commands you thought weren't there in your bash history ( like rm -fr *
, reboot
, dd if=/dev/urandom of=/dev/sdb...
, you get the point... ), or maybe expose some password entered from command line.
Bash provides the HISTCONTROL
variable to allow you to ignore commands starting with a space. Make sure it contains the ignorespace
option and add that to your ~/.bashrc
( in case you don't already have it )
echo HISTFILE=ignoredups:ignorespace >> ~/.bashrc
Well, then, make sure you start commands you don't want in your bash history with a space.
If you DO need to keep this command in history, but would love to have it done carefully, this one liner can help you out with a noisy confirmation prompt:
danger() { read -p "$(echo -ne "\x1b[01;41;37m ARE YOU SURE [y/n]?? ")" -N 1 CONFIRM; echo -e "\x1b[0m"; if [ "${CONFIRM}" == "y" ]; then $*; fi; }
Written by Rilke Petrosky (XenoMuta 2.0)
Related protips
3 Responses
You mean, you accidentally invoke those commands when you Ctrl+R or something?
Or all team members surrender their bash history files when a production server goes down? :)
Interesting tip on the same topic: Preventing accidental system halts and reboots
Molly-guard... hum... In fact, I'll give that one out a try, because SSH is a completely different situation in which my pro-tip is helpless.