「エイリアスrm =“ rm -i”」は有害と見なされますか?


17

alias rm="rm -i"かなり前に、このようなエイリアスを使用するのは非常に悪いことでした(参照が見つかりません)。

その事実の歴史的な証拠や常識的な説明はありますか?

ユーザーにコマンドを確認するために確認プロンプトに頼るという悪い習慣を与えると想像しますが、エイリアスを持たない別のプロファイルでそうすると災害につながる可能性があります。



あなたが言及したトピックを見つけたと思います。
ダニエルベック

1
@Danielは確かにこのスレッドの最も支持された答えはこの悪い習慣に言及していますが、それは実際に質問の中心的なトピックではありません。
ドゥナリル

回答:


36

あなたが正しい。

あなたはそれに慣れるので、それは悪いです。あなたはそれを持っていないシステム上にいて、あなたがrm、それがすぐに削除を開始し、あなたは何が起こっているのだろうと思っている場合。

多くのユーザーは、異なるシステムへのSSHに慣れています。そのため、多くの異なるシステムを使用し、場合によっては、ユーザーアカウント(エイリアスを含む)を設定せずに使用することが一般的です。

代わりに、eg alias rmi='rm -i'を使用し、その使用方法を学んでください。別のシステムでセットアップされていない場合、誤ってファイルを削除することはなく、常に完全なコマンドの入力にフォールバックできます。


4

@Danielが言ったように、それがそこにあることを期待するように訓練することを除いて、それ自体は有害ではありません。実際、これはCentOS(および拡張機能RHELによって、私は使用してから長すぎた)マシンのデフォルトのセットアップであり、tuchusに大きな痛みがあります。そのギグでの残りの時間は、「rootアクセスが必要ない人向けのLinux」セットアップを避けるために/ bin / rmと入力しました。


3
RHELにはデフォルトでこれがあります。少なくとも私が使用したシステムは正しいです。
ダニエルベック

4

大きな危険は、人々がこのようなものに依存してグロブをフィルタリングする可能性があることだと思います。ディレクトリからいくつかの画像を削除したいが、すべてではない場合を想像してください。

rm -i pics/*.jpg

これを使用して、globを手動でフィルタリングできますが、これは完全に合理的です。しかし、エイリアスを使用していた場合、そのエイリアスを使用rmせずにシェルに着陸し、それを試してみてください...すべての写真を削除しただけです!

個人的には、このエイリアスは血圧に有害であると感じています;)。しかし、それは私だけです。


いい例です。もちろん、危険、またはギャンブルが好きな場合
..-Dunaril

2

ダニエル・ベックが言ったことに加えて、私は自分自身が使用してい-f迂回するように-i、それは使用して、その結果として潜在的に危険である、rm -frm -rf不必要。どういうわけか関連:rm -rf問題を防ぐ方法は、この質問への回答で「-i」というファイルを作成することです:偶発的なrm -rf / *を防ぐにはどうすればよいですか?

繰り返しますが、そのエイリアスがなければ、-fを使用せず、すべてが問題になることはありません。


3
この悪い習慣をさらに悪化させる方法を見つけたように見えます:)
Dunaril

0

これは、過去数百人のユーザーとの私の経験に基づいて、はるかに害が少ないです。

rm ()  # must be a function, must require single answer for all targets
{
    ls -FCsd "$@"
    local reply ; echo -n 'remove[ny]? ' ; read reply
    if [ "_$reply" = "_y" ] ; then
        /bin/rm -rf "$@" ; else echo '(cancelled)'
    fi
}
  • ユーザーは、「*」だけでなく、ワイルドカードを正しく使用し、y / nプロンプトに依存してファイルを選択するようにトレーニングされています。
  • 正しいワイルドカードを使用するための条件付けrmは、この機能またはrm -iエイリアスのいずれかを持たない他のコンテキストで使用した場合、災害からしばしば救われました。
  • ユーザーが 'y'を何度も入力したファイルの復元に費やす時間を短縮しました
  • ユーザーは一度だけ応答すればよい-使用に対して鋭い肯定的なフィードバックを提供する
  • Control-c割り込みは機能し、何もしないと報告されます
  • スクリプトでrmはないので、他のプログラムを恐れることなく、本物はそのままです。

コードスタイルは、ほとんどがsh互換(echo .... | tr -d '\012'bash事前シェルの使用を除く)であるため、自由に独自のbash固有のものを作成してください。コード自体を共有するために投稿するのではなく、それに伴うユーザーエクスペリエンスの変更を共有するために投稿します。


Kamil:私の答えには、rm -i歴史的に(数百人のユーザーがいるという経験から)ファイルが誤って削除され、含まれる機能がユーザーに正しいワイルドカードを使用するようにトレーニングし、エラー率を下げるというものが含まれています。そこで、私は苦労する重要な問題に対処しrm -i 、利便性のために解決策を提供しましたが、機能の真下にある箇条書きは、それらが密接な関係にあることを妨げません。
アレックスノースキーズ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.