私のホームディレクトリに〜(チルダ)という名前のファイルがある


46

私はちょうど私が呼ばれるファイルがあることに気づいた~私の中で~-directoryを。

$ ls -la ~
...
-rw-r-----  1 x1 x1  733962240 Mar  1 17:55 ~
...

どのように私ができるmvrm、それとも考えていますか?


iノードで削除してみてください。
グロノスタジ

回答:


55

通常の方法では削除できないファイルに関しては、究極の解決策は次のとおりです。

ls -il 

最初の列には、ファイルのiノード番号が表示されます。

find . -inum [inode-number] -exec rm -i {} \;

これにより、検証後に指定されたinode-numberのファイルが削除されます。


これはうまくいきました。おそらくri​​ciによる解決策も良いかもしれませんが、私は試しませんでした。どうもありがとう!
scrrr

はい、リチの答えも良いです。そして、私はそれがより簡単だからだと思う。
アンドレイレゲントフ

いいですね、+ 1。私はあなたの答えをの-delete代わりに使用するように変更し-exec、それがあなたが使用していることに気づいたrm -iので、私はロールバックしました。ごめんなさい。
テルドン

心配しないで。誰かが自分の時間にふさわしい私の答えを考えるといつも嬉しいです:)
Squeezy

この答えは私にはうまくいきませんでした。Ubuntu 14.04 LTS
KhoPhi

46

~/~チルダの展開~では単語の先頭にあるチルダ()のみが適用されるため、そのファイルを(引用符なしで)参照できるはずです。


17
また、フォルダーに移動しrm ./~、あなたが言ったのと同じ理由で
カルロス・カンデロス

@CarlosCampderrósは、それを答えにすることを検討しています。./~文字通り~現在のディレクトリで指定されたファイルまたはフォルダ」を意味するため、他の回答と比較して、「最良の」最も簡単なソリューションと見なします。エスケープ文字やiノード参照のようなハックはありません。
ADTC

@ADTC:私の答えを守るために、CWDを変更する必要はありませんが、使用する場合は変更./~します。5年後、私の記憶が少しあいまいですが、私は私が提案し、その理由があると思う~/~というより、通常より./~:質問は、具体的には、「名前のファイルを参照~[OPさん]でホームディレクトリ」。「現在のディレクトリ内」ではありません。
リチ

@riciそれは理にかなっており、質問の文脈では適切です。しかし、私は一般的な答えを見るのが好きです。または、質問の特定のケースについてさらに説明する前に、一般的に最初に話すのが好きです。それが私の防御です:D
ADTC

20

引用符(rm '~')またはエスケープ(rm \~)します。


常にこれらのいずれか(たとえば$)であるか--、ファイル名が引数として解釈されるのを防ぐために追加します:rm -- -iという名前のファイルを削除します-i; またrm -- *、現在のディレクトリ内のすべてのファイルを削除する場合にも役立ちます。ファイルにそのrm -f *ような名前が付けられているからといって偶然ではありません。


うーん、それはうまくいかないようです。私は一重引用符、エスケープ、バックティックを試しました。彼はファイルを拾いません。存在しない、または〜をホームディレクトリとして解釈すると言います。
scrrr

@scrrrシェルは何ですか?
ダニエルベック

バッシュ。しかし、問題はiノードの方法を解決しました。
scrrr

@scrrrあなたの問題が解決されたことをうれしく思いますが、私はなぜbashエスケープが私のシステムと同じように動作しないのか知りたいです。
アイザックラビノビッチ

1
慎重に。--パラメータとして解釈される次の引数のみを停止します-シェルが展開を実行するのを妨げません(例:*ここで何が起こっているのか)。(他の状況の代替としてあなたがそれを提案したことは知っていますが、警告は良いでしょう。)
ボブ14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.