17
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2013-08-12

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

となります。

17
18
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?