レガシー シェル スクリプト (Solaris 上の古い ksh88 で記述) を開いたところ、コード全体で次の内容が繰り返されていることがわかりました。
[ -f $myfile ] && \rm -f $myfile
バックスラッシュをエスケープするのは奇妙に思えます。
この種の(明らかに役に立たない)エスケープがコード全体で繰り返されているので、意図的であることはわかっています。元の作者はとっくに亡くなっており、連絡を取って質問することもできません。
これは単に作者の奇妙な癖なのでしょうか、それともある時点では意味があったものの、現在は廃止されている良い習慣なのでしょうか? あるいは、実際に推奨されているやり方で、私が何かを見落としているのでしょうか?
答え1
これはエイリアス保護に使用されます:
$ ls
.bashrc a b
$ alias ls
alias ls='ls $LS_OPTIONS'
$ \ls
a b
答え2
rm に何らかの安全策を講じることは一般的に良い習慣であり、これは通常エイリアスによって実現されます。マルチユーザー環境では、これらの保護策の多くが実施されていることがよくあります。
シェル スクリプトの実践者にとっては、おそらく何をしているのかわかっているので、これらの安全策を無効にすることが役立つことがよくあります。これは、前述のように、コマンドの前に\
.を付けることで実現されます。
@Sorpigal の提案とは反対に、スクリプトがユーザーに安全策を返せなくなる可能性があるため、エイリアスの設定を解除することは絶対にお勧めしません。さらに、rm が何らかの理由で補助パスにある場合 (つまり、GNU rm と BSD rm の場合) もあるため、フル パスを使用するのも賢明ではありません。これを厳密なパスで上書きすると、PATH を持つ目的、つまり、多くのアーキテクチャ、環境、ユーザーを拡張して処理するという目的が達成されなくなります。