我有一个奇怪的问题。在我正在安装的nfs文件系统上它似乎将所有连字符翻译成冒号。例如,“a-b”变为“a:b”,“a-b”变为“a :: b”。我想测试它翻译的其他内容。
一种方法是创建一个名称包含每个ASCII可打印字符的文件,并查看它的内容。怎么能用bash做到这一点?
答案 0 :(得分:2)
Perl救援:
perl -e '$name = join "", grep !m{/}, map chr, 32 .. 126; open my $F, ">", $name or die $!'
我省略了/
。
答案 1 :(得分:2)
这是对纯粹Bash解决方案的尝试:
filename=
for (( charnum=1 ; charnum<256 ; charnum++ )) ; do
printf -v char_oct_esc '%03o' "$charnum"
printf -v char "\\$char_oct_esc"
[[ $char != / && $char =~ [[:print:]] ]] && filename+=$char
done
echo >"$filename" \
&& printf 'Created <<%s>>\n' "$filename" \
|| printf 'Failed to create <<$filename>>\n' "$filename"
有关在Bash中转换字符和数字之间的最佳信息,请参阅http://mywiki.wooledge.org/BashFAQ/071。
答案 2 :(得分:0)
你可以尝试
man ascii > all_ascii_chars.txt
答案 3 :(得分:0)
使用perl:
sub isPrint {
my $c = shift;
return $c =~ /\P{IsC}/
}
my $i;
for ($i=0; $i<128; $i++) {
if(isPrint(chr($i))) {
print chr($i);
}
}
输出:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~t