我有一些数据保存在名称中含有非 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]]'