使用Cygwin / bash下的hexdump
转储带有Windows行结尾(CRLF)的文本文件的内容时,hexdump
似乎将文件作为文本文件打开并从Windows转换行结尾(CRLF)到UNIX(LF),这使得转储不正确。
我正在Windows 7上运行的Cygwin x86_64下运行bash 4.3.42:
mgd@mgd-win7vm /cygdrive/c/tmp
$ bash --version
GNU bash, version 4.3.42(4)-release (x86_64-unknown-cygwin)
...snip...
C:
作为“文字”安装在/cygdrive/c
上:
mgd@mgd-win7vm /cygdrive/c/tmp
$ mount
C:/cygwin/bin on /usr/bin type ntfs (binary,auto)
C:/cygwin/lib on /usr/lib type ntfs (binary,auto)
C:/cygwin on / type ntfs (binary,auto)
C: on /cygdrive/c type ntfs (text,posix=0,user,noumount,auto)
现在,我们创建一个包含一行的文本文件:
mgd@mgd-win7vm /cygdrive/c/tmp
$ echo "Hello" > textfile
文件长度为7个字节(“Hello”+ CR + LF):
mgd@mgd-win7vm /cygdrive/c/tmp
$ stat textfile
File: 'textfile'
Size: 7 Blocks: 1 IO Block: 65536 regular file
...snip...
当我们使用od
转储它时,我们得到正确的输出:
mgd@mgd-win7vm /cygdrive/c/tmp
$ od -ctx1 textfile
0000000 H e l l o \r \n
48 65 6c 6c 6f 0d 0a
0000007
但是,当使用hexdump
CR + LF转换为LF时:
mgd@mgd-win7vm /cygdrive/c/tmp
$ hexdump -C textfile
00000000 48 65 6c 6c 6f 0a |Hello.|
00000006
这是一个错误吗?
有没有办法强制hexdump
以二进制模式打开文件?