'.env'$'\r' ファイルを削除します。

'.env'$'\r' ファイルを削除します。

このファイルを作成したものが何であるかわかりません。無効なシェルスクリプトがあるようです。

知られている'.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を使用している場合は、findinodeを介して削除できます。

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キーを押します。

関連情報