ASCIIエンコーディングで指定された名前のファイルをどのように生成しますか?

ASCIIエンコーディングで指定された名前のファイルをどのように生成しますか?

ベル記号で印刷できないascii 007というファイルを作成したいです。私はそれを試しましたが、ファイルに配置したテスト内容を印刷nano $'\007'する?;というファイルを生成しました。cat ?

それでは、明示的にスペルではなくASCIIエンコーディングで名前が設定されたファイルをどのように生成しますか?

答え1

実際には、すべてが期待どおりに機能することができますが、2つの異なる現象が原因で誤解を受けています。

  • ls一部の他のユーティリティは、デフォルトでは?印刷できない文字を表示します。
  • ?単一文字に一致するグローブです。

その結果、次のような動作が発生します。

$ echo foo > $'\007'
$ ls
?
$ cat ?
foo

文字通りという名前のファイルがあるようです?。そうですか?実際、これは上記の2つの現象の偶然です。文書はまだ次のように呼び出されます^G

$ printf '<%q>\n' *
<$'\a'>
$ ls -lb
total 0
-rw-r--r-- 1 chris chris 0 Aug  1 14:20 \a

ファイルのリテラル名がという即時の表示にもかかわらず、?おそらくすべてが期待どおりに機能します。

関連情報