Help us understand the problem. What is going on with this article?

rm コマンドのエイリアスを晒す

More than 5 years have passed since last update.

rm コマンドにおいて、『やってはいけない』とされているのが以下の2つ

$ rm -rf /

$ rm .*

不図とした拍子のタイプミスや勘違いによる実行など、考えただけでもゾッとします。
逆に、rm コマンドの安全対策としては以下の3つが挙げられます。

.bashrc
alias rm='rm -i'
.bashrc
set rmstar
.bashrc
alias rm='mv -i ~/Trash'

しかし、私としては

  1. ファイル毎にy[Enter]をタタくのは面倒だ

  2. *を用いて、ファイルを安全かつ効率的に削除したい

ので、rm コマンドに以下のエイリアスを被せています。

.bashrc
alias rm='set -f; rmrm'
function rmrm() {
    local ch
    echo $@ | grep -Gq "^/$\| /$\|^/ \| / "
    if [ $? -eq 0 ]; then
        set +f
        echo "DONOT execute 'rm /'"
        return 1
    fi

    echo $@ | grep -q "*"
    if [ $? -eq 0 ]; then
        set +f
        ls $@
        if [ $? -ne 0 ]; then
            return 0
        fi
        echo -n "Are you sure? [Y/n] "
        while : ; do
            read ch
            if [ "${ch}" = "Y" ]; then
                command rm $@
                return 0
            elif [ "${ch}" = "n" ] || [ "${ch}" = "N" ]; then
                return 1
            else
                echo -n "[Y/n]"
            fi
        done
    else
        command rm $@
        return 0
    fi
}

上記のエイリアスによって

$ ls
hoge.aux hoge.dvi hoge.log hoge.pdf hoge.tex piyo.eps

$ rm hoge*
hoge.aux hoge.dvi hoge.log hoge.pdf hoge.tex
Are you sure? [Y/n] Y

$ ls
piyo.eps

となります。

amayaw9
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away