Iconsという名前のファイルがあり、印刷できない文字が追加されたフォルダーがあります。 -Bオプションを指定すると、印刷できないことがわかります。
$ ls -B
$ Icon\015
ls -bを使用すると、次のようになります。
$ ls -b
$ Icon\r
ファイルを削除したいのですが、印刷できない文字を入力する方法が見つかりません。私が行った場合:
$ rm Icon\015
私は得る:
$ Icon\015: No such file or directory
私が行った場合:
$ rm Icon\r
私は得る:
$ Icon\r: No such file or directory
フォルダ全体を削除することもできますが、そのようなファイルは多くのユーザーフォルダにポップアップ表示されるため、これを行うためのより一般的な方法が必要です。
シェルはすべてのCRを自動的に変換します(\r
)in a LF(\n
)そして前のコマンドを実行します。ただし、echo
を使用してLF文字を生成できます。これらはすべて機能するはずです。
rm $(echo -e "Icon\r")
rm $(echo -e "Icon\015")
echo -e "Icon\r" | xargs rm
echo -en "Icon\r" | xargs -0 rm
最後のオプションはかなり堅牢で、考えられるすべての奇妙な文字を処理する必要があります。
コマンドラインに非印刷文字を含めるには、いくつかの方法があります。最も単純な(bashのみの)オプションは、一重引用符で囲まれた文字列の前に$
を使用することです。これにより、bashは文字列内の置換をエスケープします。いくつかの種類のエスケープシーケンスを処理するため、これらは両方とも機能することに注意してください。
rm $'Icon\r'
rm $'Icon\015'
または、Control-M(別名return)の前にControl-Vと入力して、シェルに「次に入力する文字を文字通りコマンドに含める必要がある」と指示することもできます。
rm Icon^V^M
(^ Vは実際にはコマンドの一部ではないため、コマンドラインにエコーされないことに注意してください)。
印刷できない1文字の場合、「?」を使用できます。 1文字のワイルドカードとして。したがって、abc?def?.Zipはabc1def2.Zipを意味し、abc!def#.Zipも意味します。