如何创建一个以 ASCII 编码指定的名称的文件?

Vor*_*rac 3 bash filenames

我想创建一个名为 ascii 007 的文件,它是钟形符号,不可打印。我试过了nano $'\007',但这只是创建了一个名为 ?; 的文件。cat ?打印我放在文件中的测试内容。

那么如何创建一个文件,其名称由 ascii 编码设置而不是清楚地拼写出来?

Chr*_*own 5

一切可能实际上都按您的预期工作,但是您被两种不同的现象误导了:

  • ls和其他一些实用程序?默认显示不可打印的字符
  • ? 是一个匹配单个字符的 glob

这会导致以下行为:

$ echo foo > $'\007'
$ ls
?
$ cat ?
foo
Run Code Online (Sandbox Code Playgroud)

所以看起来我们有一个字面命名的文件?,对吗?实际上,这只是上述两种现象的巧合——该文件仍然被称为^G

$ printf '<%q>\n' *
<$'\a'>
$ ls -lb
total 0
-rw-r--r-- 1 chris chris 0 Aug  1 14:20 \a
Run Code Online (Sandbox Code Playgroud)

可能一切都按您的预期工作,尽管立即显示该文件实际上被称为?.