Join my Bash scripting course on Udemy 👀

Confirmation when running rm in Zsh

March 16, 2021  ‐ 2 min read

Better safe than sorry right? To prevent yourself from stupid mistakes when removing files you can add the -i option to the rm command. This will ask for a confirmation before removing the file.

$ rm -i secrets.txt
rm: remove regular file 'secrets.txt'?

You can now press y to indeed remove the file. For directories this works the same.

$ mkdir secrets
$ vim secrets/dirty.txt
$ rm -ir secrets
rm: descend into directory 'secrets'? y
rm: remove regular file 'secrets/dirty.txt'? y
rm: remove directory 'secrets'? y

Right, it works, but a confirmation for each individual directory and file is a bit overkill if you'd ask me. Using the capital I option instead fixes this.

$ mkdir secrets
$ vim secrets/dirty.txt
$ rm -Ir secrets
rm: remove 1 argument recursively? y

Typing out this -I is something that I'd probably forget at some point. So instead I decided to make it an alias for the rm command.

To do this open up the ~/.zshrc config file, or wherever you add your aliases, and add the following:

# ~/.zshrc

alias rm='rm -I'

Somewhat more trivial but maybe useful too is that the cp and mv commands both accept this -i option too.

Now what if you unintentionally removed a file anyway? Then I hope you checked the file in to version control.