linux 命令 xxd

xxd [options] [infile [outfile]]
xxd -r[evert] [options] [infile [outfile]]

xxd 命令用于用二进制或十六进制显示文件的内容,如果没有指定outfile参数,则把结果显示在屏幕上,如果指定了outfile则把结果输出到 outfile中;如果infile参数为 – 或则没有指定infile参数,则默认从标准输入读入。

常用选项:

-b

转到 比特(二进制 数字) 模式, 而不是十六进制模式。在这种模式下, 每个字符被表示成八个 0/1 的数字,而不是一般的十六进制形式。每一行都以一个用十六进制形式表示的行号,后面是ascii (或者 ebcdic) 形式开头。命令行选项 -r, -p 在这个模式下不起作用。

-h

显示帮助信息后退出。

-l N

只输出 N 个字符。

-p

以 postscript的连续十六进制转储输出,这也叫做纯十六进制转储。

-r

逆向操作: 把xxd的十六进制输出内容转换回原文件的二进制内容。

-seek offset

用在 -r 之后: 会在当前档桉的 偏移量上增加 .

-s [+][-]seek

从infile的绝对或者相对偏移量 开始. + 表示相对于标 输入当前的位置 (如果不 标准输入就没有意义了). – 表示从档桉末尾 (如果和 + 连用: 从标准输入当前位置) 向前数一些字符, 从那个地方开始. 如果没有 -s 选项, xxd 从 当前位置开始.

-u

十六进制输出时使用大写字母,默认是小写字母。

使用范例:(摘自xxd man page)

显示 file 除了 前 三行 (十六进制 的 0×30) 的 所有 内容.

xxd -s 0×30 file

显示 file 最后 三行 (十六进制 的 0×30) 的 所有 内容.

xxd -s -0×30 file

显示 120 个 字符, 每行 20 个 字符, 连续 显示.

xxd -l 120 -ps -c 20 xxd.1
2e544820585844203120224d616e75616c207061
676520666f7220787864220a2e5c220a2e5c2220
32317374204d617920313939360a2e5c22204d61
6e207061676520617574686f723a0a2e5c222020
2020546f6e79204e7567656e74203c746f6e7940
7363746e7567656e2e7070702e67752e6564752e

显示 120 个 字符, 每行 12 个 字符.

xxd -l 120 -c 12 xxd.1
0000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 “M
000000c: 616e 7561 6c20 7061 6765 2066 anual page f
0000018: 6f72 2078 7864 220a 2e5c 220a or xxd”..\”.
0000024: 2e5c 2220 3231 7374 204d 6179 .\” 21st May
0000030: 2031 3939 360a 2e5c 2220 4d61 1996..\” Ma
000003c: 6e20 7061 6765 2061 7574 686f n page autho
0000048: 723a 0a2e 5c22 2020 2020 546f r:..\” To
0000054: 6e79 204e 7567 656e 7420 3c74 ny Nugent 
0000060: 6f6e 7940 7363 746e 7567 656e ony@sctnugen
000006c: 2e70 7070 2e67 752e 6564 752e .ppp.gu.edu.

只 显示 xxd.1 中 的 日期.

xxd -s 0×28 -l 12 -c 12 xxd.1
0000028: 3231 7374 204d 6179 2031 3939 21st May 199

把 input_file 考到 output_file 并 在 前面 增加 100 个 字节的 0×00.

xxd input_file | xxd -r -s 100 > output_file

给 档桉 xxd.1 中的 日期 打 补钉.

echo ‘0000029: 3574 68′ | xxd -r – xxd.1
xxd -s 0×28 -l 12 -c 12 xxd.1
0000028: 3235 7468 204d 6179 2031 3939 25th May 199

建立 一个 65537 字节的 档桉, 所有 字节 都是 0×00, 除了 最后 一个 字节 是 ‘A’ (十六进制 0×41).

echo ‘010000: 41′ | xxd -r > file

打开 autoskip, 显示 上例 中 建立的 档桉.

xxd -a -c 12 file
0000000: 0000 0000 0000 0000 0000 0000 …………
*
000fffc: 0000 0000 40 ….A

建立 一个 只 含有 一个 ‘A’ 的 档桉. ‘-r -s’ 后面 的数字 同 档桉 中的 行号 相 抵消; 结果是 开头 的 字节 被跳过了.

echo ‘010000: 41′ | xxd -r -s -0×10000 > file

从 串行线 中 读入 一个个的 单独的 字符.

xxd -c1 < /dev/term/b &
stty < /dev/term/b -echo -opost -isig -icanon min 1
echo -n foo > /dev/term/b



当我们需要把二进制转成c语言中使用的16进制字符数组时,命令xxd是很有用的。

xxd 帮助信息如下:关键选项标黑。

[root@localhost ]# xxd --help
Usage:
       xxd [options] [infile [outfile]]
    or
       xxd -r [-s [-]offset] [-c cols] [-ps] [infile [outfile]]
Options:
    -a          toggle autoskip: A single '*' replaces nul-lines. Default off.
    -b          binary digit dump (incompatible with -p,-i,-r). Default hex.
    -c cols     format <cols> octets per line. Default 16 (-i: 12, -ps: 30).
    -E          show characters in EBCDIC. Default ASCII.
    -g          number of octets per group in normal output. Default 2. 每个goup的字节数,默认为2,可设置。
    -h          print this summary.
    -i          output in C include file style. :输出为c包含文件的风格,数组方式存在。
    -l len      stop after <len> octets.        :转换到len个字节后停止转换。
    -ps         output in postscript plain hexdump style.
    -r          reverse operation: convert (or patch) hexdump into binary.
    -r -s off   revert with <off> added to file positions found in hexdump.
    -s [+][-]seek start at <seek> bytes abs. (or +: rel.) infile offset.
   -u          use upper case hex letters. : 字节大写方式
    -v          show version: "xxd V1.10 27oct98 by Juergen Weigert".

比如运行:

> xxd -g 1 -i -u -l 10000000 nm.ts > xxd_test.txt

生成的文本显示:

unsigned char __0513_1634_ch32_666_10_ts[] = {
0X47, 0X02, 0X03, 0X13, 0XF8, 0X5A, 0XC5, 0X40, 0X26, 0XE4, 0XD0, 0XDE,
0XAD, 0XB8, 0X76, 0X89, 0X85, 0X23, 0X06, 0X04, 0X6E, 0X05, 0X8B, 0X09,
0XC0, 0X5C, 0X96, 0X4F, 0X18, 0X51, 0X41, 0XC8, 0X40, 0X9F, 0X06, 0X93,
0X38, 0XC1, 0XBB, 0X1A, 0XBC, 0XAC, 0X47, 0XFF, 0X5E, 0X54, 0XEB, 0XA7,
0X14, 0X36, 0X85, 0X8A, 0X90, 0X14, 0X17, 0XA2, 0X9D, 0XC0, 0X84, 0X56,
0XCB, 0X97, 0X78, 0XC8, 0X57, 0X15, 0X3E, 0X61, 0X6F, 0XFE, 0XC9, 0X39,
0XEF, 0XD3, 0XB6, 0X6A, 0XD2, 0XE4, 0XFB, 0X4C, 0X05, 0XF6, 0X03, 0XED,
0X50, 0XB3, 0XE7, 0X46, 0X57, 0X24, 0X71, 0X16, 0X38, 0X45, 0X53, 0X19,
0X56, 0X25, 0X3C, 0X8D, 0X4C, 0XA9, 0X28, 0X9A, 0XB2, 0X99, 0X76, 0X52,
0X28, 0XE9, 0XD6, 0XD6, 0X11, 0X94, 0X89, 0X19, 0X4D, 0XEA, 0X68, 0X76,
0X53, 0XC6, 0XAA, 0X3A, 0XD4, 0XA1, 0X25, 0XA5, 0X03, 0XB0, 0X73, 0XA0,
0XAE, 0X11, 0XC9, 0XBD, 0X37, 0X17, 0X11, 0X5F, 0X30, 0X34, 0X34, 0X0B

.....

};

unsigned int nm.ts_len = 10000000;

另外,在vim中也可以把文件转换为16进制来显示:

:%!xxd

返回正常显示:

:%!xxd -r


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用方法,解压到本地目录,配置path,即可在dos下使用linux命令。 windows下能直接执行的linux命令,基本包括日常所有,如:[.exe grolbp.exe regtool.exe a2p.exe grolj4.exe rm.exe a2p5.10.0.exe grops.exe rmdir.exe addftinfo.exe grotty.exe rmt.exe addr2line.exe gzip.exe run.exe alternatives.exe head.exe runcon.exe ar.exe hostid.exe rxvt.exe arch.exe hostname.exe scp.exe as.exe hpftodit.exe sdiff.exe ascii.exe i686-pc-cygwin-gcc-3.4.4.exe sed.exe ash.exe i686-pc-cygwin-gcc-3.exe semstat.exe awk.exe i686-pc-cygwin-gcc.exe semtool.exe banner.exe id.exe seq.exe base64.exe indxbib.exe setfacl.exe basename.exe info.exe setmetamode.exe bash.exe infokey.exe sftp-server.exe bigram.exe install-info.exe sftp.exe bunzip2.exe install.exe sh.exe bzcat.exe ipcrm.exe sha1sum.exe bzip2.exe ipcs.exe sha224sum.exe bzip2recover.exe join.exe sha256sum.exe c++filt.exe kill.exe sha384sum.exe cat.exe ld.exe sha512sum.exe cc-3.exe less.exe shmtool.exe cc.exe lessecho.exe shred.exe chcon.exe lesskey.exe shuf.exe chgrp.exe link.exe size.exe chmod.exe lkbib.exe sleep.exe chown.exe ln.exe soelim.exe chroot.exe locate.exe sort.exe cksum.exe login.exe split.exe cmp.exe logname.exe ssh-add.exe code.exe lookbib.exe ssh-agent.exe comm.exe lpr.exe ssh-keygen.exe conv.exe ls.exe ssh-keyscan.exe cp.exe make.exe ssh-keysign.exe cpp-3.exe makeinfo.exe ssh.exe cpp.exe man.exe sshd.exe crypt.exe man2html.exe ssp.exe csplit.exe manpath.exe stat.exe cut.exe md5sum.exe strace.exe cygcheck.exe mkdir.exe strings.exe cygpath.exe mkfifo.exe strip.exe cygrunsrv.exe mkgroup.exe stty.exe cygserver.exe mknod.exe su.exe cygstart.exe mkpasswd.exe sum.exe d2u.exe mkshortcut.exe svn.exe date.exe mktemp.exe svnadmin.exe dd.exe mount.exe svndumpfilter.exe df.exe msgtool.exe svnlook.exe diff.exe mv.exe svnsync.exe diff3.exe nc.exe svnversion.exe dir.exe ngettext.exe sync.exe dircolors.exe nice.exe tac.exe dirname.exe nl.exe tail.exe dlltool.exe nm.exe tar.exe dllwrap.exe nohup.exe tbl.exe dos2unix.exe objcopy.exe tee.exe du.exe objdump.exe test.exe dump.exe od.exe texindex.exe dumper.exe oldfind.exe tfmtodit.exe echo.exe openssl.exe touch.exe editrights.exe passwd.exe tr.exe egrep.exe paste.exe troff.exe env.exe pathchk.exe true.exe envsubst.exe peflags.exe tsort.exe eqn.exe perl.exe tty.exe expand.exe perl5.10.0.exe u2d.exe expr.exe pfbtops.exe umount.exe factor.exe pgawk-3.1.6.exe uname.exe false.exe pgawk.exe unexpand.exe fgrep.exe pic.exe uniq.exe find.exe pinky.exe unix2dos.exe fmt.exe post-grohtml.exe unlink.exe fold.exe pr.exe unprotoize-3.exe frcode.exe pre-grohtml.exe unprotoize.exe gawk-3.1.6.exe printenv.exe users.exe gawk.exe printf.exe vdir.exe gcc-3.exe protoize-3.exe vim.exe gcc.exe protoize.exe wc.exe gcov-3.exe ps.exe which.exe gcov.exe ptx.exe who.exe getclip.exe putclip.exe whoami.exe getfacl.exe pwd.exe windmc.exe gettext.exe ranlib.exe windres.exe gkill.exe readelf.exe xargs.exe gprof.exe readlink.exe xmlwf.exe grep.exe readshortcut.exe xxd.exe grn.exe realpath.exe yes.exe grodvi.exe rebase.exe zdump.exe groff.exe refer.exe zic.exe

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值