hexdump命令

今天写shell的时候报错,提示:

command not found 2

在网上搜了一下发现是文件的格式不对,dos2unix一下就好了。进一步的搜发现有个工具hexdump可以查看文件格式是不是linux的。

hexdump是Linux下的一个二进制文件查看工具,可以将二进制文件转换为ASCII、10进制、16进制或8进制进行查看。
常用选项:
-b 将每个字节显示为8进制
-c 将每个字节显示为ASCII字符
-C 每个字节显示为16进制和相应的ASCII字符
-d 每两个字节显示为10进制
-o 每两个字节显示为8进制
-x 每两个字节显示为16进制



注:常见的ASCII字符的十六进制表示
\r 0D
\n 0A
\t 09
DOS/Windows的换行符 \r\n 即十六进制表示 0D 0A
Linux/Unix的换行符 \n 即十六进制表示 0A


以我的文件为例,报错的时候的文件格式:

[rd@sjs-storage01 ywh]$ hexdump -C getpokerinfo.sh
00000000 23 21 2f 62 69 6e 2f 73 68 0d 0a 20 0d 0a 44 42 |#!/bin/sh.. ..DB|
00000010 4e 41 4d 45 3d 22 70 69 72 61 74 65 70 6f 6b 65 |NAME="piratepoke|
00000020 72 22 0d 0a 47 52 4f 55 50 4e 41 4d 45 3d 22 67 |r"..GROUPNAME="g|
00000030 61 6d 65 39 30 30 30 30 30 30 30 31 22 0d 0a 0d |ame900000001"...|
00000040 0a 23 44 42 49 50 3d 60 63 75 72 6c 20 2d 46 20 |.#DBIP=`curl -F |
00000050 6d 6f 64 75 6c 65 3d 64 61 74 61 20 2d 46 20 64 |module=data -F d|
00000060 62 3d 24 44 42 4e 41 4d 45 20 2d 46 20 67 72 6f |b=$DBNAME -F gro|


可见,结束符为0d 0a


用dos2unix转换后再查看为:

00000000 23 21 2f 62 69 6e 2f 73 68 0a 20 0a 44 42 4e 41 |#!/bin/sh. .DBNA|
00000010 4d 45 3d 22 70 69 72 61 74 65 70 6f 6b 65 72 22 |ME="piratepoker"|
00000020 0a 47 52 4f 55 50 4e 41 4d 45 3d 22 67 61 6d 65 |.GROUPNAME="game|
00000030 39 30 30 30 30 30 30 30 31 22 0a 0a 23 44 42 49 |900000001"..#DBI|
00000040 50 3d 60 63 75 72 6c 20 2d 46 20 6d 6f 64 75 6c |P=`curl -F modul|
00000050 65 3d 64 61 74 61 20 2d 46 20 64 62 3d 24 44 42 |e=data -F db=$DB|
00000060 4e 41 4d 45 20 2d 46 20 67 72 6f 75 70 3d 24 47 |NAME -F group=$G|
00000070 52 4f 55 50 4e 41 4d 45 20 68 74 74 70 3a 2f 2f |ROUPNAME http://|
00000080 31 39 32 2e 31 36 38 2e 33 2e 31 33 31 3a 38 30 |192.168.3.131:80|


可见,结束符已经变成了0a

你可能感兴趣的:(hexdump命令)