私は何が起こっているのかを理解しようとしています。私は約1時間前にsudoを使って/ rootにあるファイルを編集していましたが、保存して終了したときに誤ってバックスラッシュキーを押して、ルートが所有していた "\"ファイルというファイルが私のホームディレクトリにありました。権限は640です。与えられた名前のファイルを削除できないことを知り、別のバックスラッシュを使用してバックスラッシュをエスケープして削除しようとしましたが、これはsudo rm \\
システムがハングするように見え、その時点でパニックになって最初に試しましたControl-C(もちろんそうではありませんでした)。アクション機能)とControl-Z(キーの組み合わせを数回押した後)プロンプトが返されました。
もともとコマンドを実行したときにホームディレクトリにあったことを確認した後、プロセスを見つけることにしました。最後にこれを削除するためにaを実行する必要がありましたが、kill -9
システムの他の場所からファイルが削除されていないことを確認したかったです。このコマンドが中断される他の理由は考えられません。
答え1
私はユーザーがsudo rm \
。
どのコマンドも入力しても何も\
しません。Enter
改行文字をエスケープしただけなので、何もしません。同様の新しいプロンプトが表示されることがあります>
。そうですか?これは$PS2
、現在のコマンドを完了するためにより多くのデータが必要なときにシェルが使用する補助プロンプト()です。
誤って(または意図的に)提案を終了できなかった場合は、次のような結果が得られます。
$ echo 'hello
>
そこから続けてください:
$ echo 'hello
> world'
hello
world
行の末尾に次のように入力して\
連続行を導入できます。
$ ls -l \
>
ここから前の行を続けることができます。
$ ls -l \
> /usr \
> /bin
後で改行を押すと、Enter改行が空白に変換され、コマンドが実行されます(ls -l /usr /bin
この例で入力したように)。
だから結論は:あなたが入力しました
$ sudo rm \
次にEnterキーを押します。これは、シェルがまだコマンドを終了するのを待っているため、コマンドを実行していないことを意味します。この時点でCtrl+Cキャンセルコマンドを押します。
次の質問は:というファイルを削除する方法は\
? (ルート所有)
このように:
$ sudo rm \\
または次のようになります。
$ sudo rm '\'
答え2
この回答は、タイトルと質問の事前レンダリングされたテキストで実行することに関する質問をカバーしますsudo rm \\
。 Unix.SEに実際に入力した内容によると、これが実行されているようです。ただし、観察した動作によっては実際にコマンドを実行しないことがあります。どの注文する、クサラナンダが説明するように。したがって、対応する回答も読んでください。それにもかかわらず、両方の回答が他のファイルを削除した可能性があるというあなた(そしておそらく他の読者)の懸念を和らげるのに役立つと思います。結局のところ、心配の一部は、実際に何が実行されているのか分からないことです。
システムの他の場所では、ファイルが削除されないことを確認したいと思います。
通らない限り-r
または、オプションを使用する-R
と、指定した各ファイル名オペランドに対して複数のファイルを削除しようとしません。ファイル名オペランドに渡されたシェルで実行します。--recursive
rm
rm \\
\
時には単一のオペランドのように見えますが、複数のオペランドに拡張されるものを渡すこともできます。たとえば、または同じワイルドカード文字を使用している場合、*
これが発生する可能性があります?
。これは心配する必要はありません\\
。
時にはファイル名がおよびで始まります。-
これはオプションとして解釈できます。これが、一部のコマンド(含むrm
)が--
オプションの終わりを示すオプションをサポートしている理由です。しかし、この場合でも問題はありません。 、no\
で始まります。\
-
可能性はありますが、可能性は低いです。とても悪い考え- 再帰ジョブを単に実行するのではなく、rm
オプションを再帰ジョブに渡すエイリアスまたはシェル関数です。やってみたらおそらくご存知でしょう。まだこれを行っていない可能性があります。しかし、確認してみることができます。 RHELで利用可能なBashを含むほとんどのBourneスタイルのシェルで(またタグ付け)/bin/rm
/bin/rm
強く打つ)、以下を実行できます。
type rm
次のいずれかが表示される可能性が高いです。
rm is /bin/rm
rm is hashed (/bin/rm)
または、などのオプションを渡すrm
エイリアスとして表示されることもあります。しかし、またはを経ない限り、削除するように指定したファイル以外の複数のファイルを削除しようとしません。-i
-I
rm
-r
-R
--recursive
rm
Red Hat Enterprise Linux (タグ付きバージョン) を含む GNU/Linux システムで利用可能なバージョンラエル)はGNU Coreutilsの1つです。ここからCoreutilsのマニュアルを読むことができますrm
。一部のディストリビューションはダウンストリームパッチを適用しますが、これらのパッチはデフォルトの操作を変更したり、誤ってrm
ファイルを繰り返し削除したりする新しい方法を追加しないでください。動作は基本的にさまざまなUnixファミリーオペレーティングシステムで同じでありrm
、実行中のオペレーティングシステムを指定していない場合でも上記を適用する必要があります。
答え3
「トリッキー」ファイル名を削除するには、ファイル名の前に次の接頭辞を付けます./
。
sudo rm ./\\
/
トレーラーがルートディレクトリに興味深いファイル(例:-rf*:
cd /
sudo rm ./-rf\ \*
それ以外の場合、./
すべてのファイルが消えます。