このファイルを作成したものが何であるかわかりません。無効なシェルスクリプトがあるようです。
知られている'.env'$'\r'
私はこれの様々なバージョンを試しただけでなく、ディレクトリを開く、ファイルを選択し、Shift-Dを使用してrm
。動作しません。失敗します。vim ./
**warning** (netrw) delete(/root/squawker/.env) failed!
NetrwMessage [RO]
"NetrwMessage" --No lines in buffer--
この不快なファイルをどのように削除できますか?
これはUbuntu 20.04にあります
答え1
最新のLinuxシステム(ほとんどのデスクトップディストリビューションなどのGNUツールを使用)でls
シェルの引用構文を使用すると、名前に奇妙な文字が印刷されます。その場合、ファイル名は'.env'$'\r'
キャリッジリターン文字がある場所です。 Windows行末のシェルスクリプトがある場合は、たとえば実行します。ls
.env<CR>
<CR>
whatever > .env
ここでの利点は、ls
出力をシェルへの入力として直接使用できることです。まあ、少なくともBash、ksh、zshの場合、Debian / UbuntuのDashなどの標準POSIX shではありません/bin/sh
。
だからそれを試してみてください
rm -f '.env'$'\r'
もちろん、名前付きの項目と文字を1つrm -f .env?
削除する努力も行わなければなりません。.env
もちろん、ファイル名は一重引用符とバックスラッシュを使用して文字通りにすることもできます。しかし、これは偶然に達成するのがより困難です。それでも、名前に含まれている内容をすべてrm -f *.env*
削除する努力が必要です。.env
答え2
GNUを使用している場合は、find
inodeを介して削除できます。
ls -lid -- .env*
最初の列の数字はですinode
。ファイル名にその文字列を含む他のファイルがある場合は、env
実際に必要なファイルが何であるかに注意してください。
find . -inum <inode> -exec rm -f {} \;
<inode>
実際のinode番号に置き換えてください。そのセクションを削除すると、-exec
削除する前に目的のファイルが返されるかどうかがわかります。
以下も使用できます。
find . -inum <inode> -delete
時々-exec
習慣的にこのビットを使用しますが、どちらも機能します。
答え3
名前のトリッキーな部分にワイルドカードを使用するようにシェルに要求し、rm
入力する必要がないことを覚えておいてください。
$ touch '.env'$'\r'
$ ls -l .env*
-rw-rw-r-- 1 paul paul 0 May 20 16:51 '.env'$'\r'
$ rm -i .env*
rm: remove regular empty file '.env'$'\r'? y
答え4
不快なファイル名を選択するための迅速で汚い方法は、シェルのオートコンプリート機能を使用することです。
と入力rm
し、削除したいファイルが画面に印刷されるまでTabキーを押します。