我有一个看起来“正常”的文本文件(包含英语句子),它被file
命令检测为ASCII Pascal program text
.
Pascal 程序文本与普通 ASCII 英文文本有何区别?
我做到了head -10 file > tmp
file tmp
仍然显示Pascal
。
tmp
当在 VI 中打开时:set list
HELEN'S BABIES$
$
With some account of their ways, innocent, crafty, angelic, impish,$
witching and impulsive; also a partial record of their actions during$
ten days of their existence$
$
By JOHN HABBERTON$
$
$
$
输出head file | od -c
0000000 H E L E N ' S B A B I E S \n \n
0000020 W i t h s o m e a c c o u n
0000040 t o f t h e i r w a y s ,
0000060 i n n o c e n t , c r a f t
0000100 y , a n g e l i c , i m p i
0000120 s h , \n w i t c h i n g a n d
0000140 i m p u l s i v e ; a l s o
0000160 a p a r t i a l r e c o r
0000200 d o f t h e i r a c t i o
0000220 n s d u r i n g \n t e n d a
0000240 y s o f t h e i r e x i s
0000260 t e n c e \n \n B y J O H N H
0000300 A B B E R T O N \n \n \n \n
0000314
文件上传至此处:http://www.fileswap.com/dl/L0eCWJTvy/
我正在CentOS release 6.5
使用file
版本5.04
第4行有一些东西。从第 4 行开始删除会将其检测为仅文本文件
答案1
我能够在 OS X 10.6.8 和 OpenBSD 5.5-current 上重现这一点。
使用 打印出调试信息file -D tmp
,结果发现您的文本文件在file(1)
识别 Pascal 关键字之前失败了大约 2000 次测试record
并确定它必须是 Pascal 程序文本。
一个最小的工作示例可以如下获得:
$ echo record > test
$ file test
test: ASCII Pascal program text
经过无数次启发后,只有“第三组也是最后一组测试,基于硬连线假设”ascmagic.c适用。这些测试识别“我们根据可能出现在文件中任何位置的关键字了解的文件类型”。因此,对文件进行最小的更改即可将其正确标识为ASCII English text
,例如在第三行中更改their
为。the