LoginSignup
1
1

More than 5 years have passed since last update.

rmコマンドのalias回避

Posted at

rmコマンドのalias回避

運用シェルスクリプトでrmコマンドは、
よく使うと思います。

ですが、linux標準では、

[.bashrc]に

alias rm='rm -i' .

と設定されているため

運用シェルスクリプトでは

rm -f <filename>

と強制削除をやりたくなるところですが

 rm -f (強制削除) の終了ステータスは常に「0」となるため、判定には使えない…

なら、どうするか?

その1: unalias rm する。

その2: コマンドをフルパス (/bin/rm)で書く。

その3: ¥rm aaa.txt コマンド先頭にバックスラッシュもしくはエンマークでaliasをエスケープする。

これなら、簡単に回避出来ますね。

ところが、どっこい…w

find <dir> -exec rm {} ¥;

もちろん、上記対策をしても
aliasが効いてしまいます。

なぜなら、execオプションは
別プロセスで実行されるため
再度、[.bashrc]が読み込まれからだ。

だったら、

find <dir> | xargs rm

なら大丈夫じゃないかと推測して
試してみると案の定、大丈夫。

めでたし、めでたし…(σ≧▽≦)σ

ちなみに

evalでは、

eval ¥rm

eliasは無視されない。
だが、

eval /bin/rm

だと、aliasは無視される

う~ん!どっちなんじゃ…

1
1
0

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
1
1