![如何访问目录名中含有非 ASCII、\n 字符的目录](https://linux22.com/image/1171825/%E5%A6%82%E4%BD%95%E8%AE%BF%E9%97%AE%E7%9B%AE%E5%BD%95%E5%90%8D%E4%B8%AD%E5%90%AB%E6%9C%89%E9%9D%9E%20ASCII%E3%80%81%5Cn%20%E5%AD%97%E7%AC%A6%E7%9A%84%E7%9B%AE%E5%BD%95.png)
我有一些数据保存在名称中含有非 ASCII 字符的目录中,我该如何访问其中的数据?
该目录显示为:
w0p6_t[[0.53.5]?[1.71.2]]
\
但是,转义前面使用的特殊字符不起作用,也不像建议的那样用引号括住目录名这里。
我相信这个“?”是一个新行字符(ascii \012
),ls -lb
返回:
w0p7_t[[0.53.5]\n[1.71.2]]
我可以使用以下命令查看目录的内容tree
,该命令显示目录如下:
w0p6_t[[0.53.5]\012[1.71.2]]
以及其所有内容。
我也尝试过:
cd "w0p7_t[[0.53.5]\n[1.71.2]]"
cd "w0p7_t[[0.53.5]\012[1.71.2]]"
和
cd w1p0_t\[\[0.53.5]\\012\[1.71.2\]\]
cd w1p0_t\[\[0.53.5]\\n\[1.71.2\]\]
但没有成功。
此外,尝试使用自动完成命令Tab不会提示有关该目录的建议。
答案1
以下是几种方法(可能还有更多)
一个联合国引用
?
将匹配任何单个字符 - 包括换行符。例如cd w0p6_t\[\[0.53.5\]?\[1.71.2\]\]
或者
cd 'w0p6_t[[0.53.5]'?'[1.71.2]]'
你可以使用 bash
$'string'
ANSI 转义来扩展\n
序列cd $'w0p6_t[[0.53.5]\n[1.71.2]]'