linux命令之xxd学习

1、xxd命令主要用来查看文件对应的十六进制形式,也可以讲文件对应的十六进制形式输出到一个指定的文件。

使用此命令所支持的特有选项,亦可以以二进制的形式查看文件。

关于此命令经常使用的选项主要有:

(1)-a : 它的作用是自动跳过空白内容,默认是关闭的

(2)-c : 它的后面加上数字表示每行显示多少字节的十六进制数,默认是16bytes,最大是256bytes

(3)-g : 设定以几个字节为一块,默认为2bytes

(4)-l : 显示多少字节的内容

(5)-s : 后面接【±】和address。“+”表示从地址处开始的内容,“-”表示距末尾address开始的内容

(6)-b:以二进制(0 or 1)的形式查看文件内容

(7)-r:reverse operation: convert (or patch) hexdump into binary. If not writing to stdout, xxd writes into its output file without truncating it. Use the combination -r -p to read plain hexadecimal dumps without line number information and without a particular column layout. Additional Whitespace and line-breaks are allowed anywhere.(翻译功力差,直接上原文)

我们可以使用 man 命令查看xxd命令的详细解释:man xxd

2、xxd命令的简单应用

2.1 显示文件的十六进制形式

-bash-3.2$ xxd demon.c
0000000: 2369 6e63 6c75 6465 203c 7374 6469 6f2e  #include <stdio.
0000010: 683e 0a2f 2f74 6869 7320 6973 206d 6169  h>.//this is mai
0000020: 6e20 6675 6e63 0a69 6e74 206d 6169 6e28  n func.int main(
0000030: 290a 7b0a 2020 2020 696e 7420 6e75 6d20  ).{.    int num
0000040: 3d31 303b 0a20 2020 2070 7269 6e74 6628  =10;.    printf(
0000050: 226e 756d 6265 7220 6973 2025 645c 6e22  "number is %d\n"
0000060: 2c6e 756d 293b 0a20 2020 2072 6574 7572  ,num);.    retur
0000070: 6e20 303b 0a7d 0a0a                      n 0;.}..

2.2 将十六进制显示的内容输出到制定文件

xxd demon.c demon.xxd

xxd命令 原文件 输出到的目标文件

2.3 以二进制形式显示文件内容 (-b选项的使用)

-bash-3.2$ xxd -b demon.c
0000000: 00100011 01101001 01101110 01100011 01101100 01110101  #inclu
0000006: 01100100 01100101 00100000 00111100 01110011 01110100  de <st
000000c: 01100100 01101001 01101111 00101110 01101000 00111110  dio.h>
0000012: 00001010 00101111 00101111 01110100 01101000 01101001  .//thi
0000018: 01110011 00100000 01101001 01110011 00100000 01101101  s is m
000001e: 01100001 01101001 01101110 00100000 01100110 01110101  ain fu
0000024: 01101110 01100011 00001010 01101001 01101110 01110100  nc.int
000002a: 00100000 01101101 01100001 01101001 01101110 00101000   main(
0000030: 00101001 00001010 01111011 00001010 00100000 00100000  ).{.
0000036: 00100000 00100000 01101001 01101110 01110100 00100000    int
000003c: 01101110 01110101 01101101 00100000 00111101 00110001  num =1
0000042: 00110000 00111011 00001010 00100000 00100000 00100000  0;.
0000048: 00100000 01110000 01110010 01101001 01101110 01110100   print
000004e: 01100110 00101000 00100010 01101110 01110101 01101101  f("num
0000054: 01100010 01100101 01110010 00100000 01101001 01110011  ber is
000005a: 00100000 00100101 01100100 01011100 01101110 00100010   %d\n"
0000060: 00101100 01101110 01110101 01101101 00101001 00111011  ,num);
0000066: 00001010 00100000 00100000 00100000 00100000 01110010  .    r
000006c: 01100101 01110100 01110101 01110010 01101110 00100000  eturn
0000072: 00110000 00111011 00001010 01111101 00001010 00001010  0;.}..

2.4 指定显示文件的字节数

-bash-3.2$ xxd -l 16 demon.c
0000000: 2369 6e63 6c75 6465 203c 7374 6469 6f2e  #include <stdio.

使用 -l参数,限定只显示16 bytes的内容

原文链接:https://blog.csdn.net/zhanghui962623727/article/details/91128852

xxd命令可以为给定的标准输入或者文件做一次十六进制的输出,它也可以将十六进制输出转换为原来的二进制格式,即将任意文件转换为十六进制或二进制形式

如果没有给定输入文件,标准输入就作为输入文件infile。如果infile是一个‘-’ 字符,也从标准输入读入。如果没有给定outfile (或者它的文件名是一个‘-'字符), 结果将输出至标准输出。

-a | -autoskip

   打开/关闭 autoskip: 用一个单独的 '*' 来代替空行。默认关闭。

-b | -bits

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

-c cols | -cols cols

-c cols | -cols cols每行表示个字符。 默认 16 (-i: 12, -ps: 30, -b: 6)。 最多256。

-g bytes | -groupsize bytes

    每<bytes>个字符(每两个十六进制字符或者八个二进制数字)之间用一个空格隔开。用 -g 0禁止分组。在普通模式中<Bytes>默认是2,在二进制模式中是1。分组并不适用于postscript 或者include style 选项。

-h | -help

    显示可用命令概述并且退出。不做其它任何事情。

-i | -include

    输出为C语言的包含文件形式。 除非xxd从标准输入读入,不然会输出一个完整的静态数组定义(与输入文件同名)。

-l len | -len len

    输出<len>个字符后停止。

-p | -ps | -postscript | -plain

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

-r | -revert

  逆向操作:把十六进制转储转换(或者打补丁)成二进制形式。如果不输出到标准输出,xxd并不把输出文件截断,而是直接写到输出文件。用 -r -p 来从一个没有行号没有某种列格式的纯十六进制转储读入。附加的空格 和换行可以出现在任何地方。

-seek offset

   用在-r之后: 会在 当前 文件的 偏移量 上 增加 <offset>。

-s [+][-]seek

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

-u

用大写字母。默认的是小写字母。

-v | -version

   显示版本字符串。

例:
将文件内容转换为十六进制:
xxd test.txt

使用xxd跳过第n行,想要从第6行开始生成十六进制转储(0x50表示第6行,0x00表示第1行)
xxd -s 0x50 test.txt

将输出限制为特定长度,从第一行(0x00)打印到第5行(0x40)
xxd -l 0x50 test.txt

将文件内容转换为二进制文件:
xxd -b test.txt

设置列长,默认列长度为16,即16个字符,包括空格,将列长度设置为9:现在我们将列长度设置为“9”:
xxd -c 9 test.txt

纯16进制转储,输出保存在hex文件中,并使用cat命令从hex文件中读取输出:
xxd -p test.txt > hex

cat hex

还原hex文件,将纯十六进制转储的反向输出打印为了ASCII格式:
xxd -r -p hex

分组大小字节,将输出分组为多少个八位字节,默认是2个字节,接下来设为8,即8个字节一组,分为2组:
xxd -g 8 test.txt

我们常用命令:

xxd -p test.class >> java.txt 转为16进制

xxd -r -p java.txt >> test.class 还原文件

原文链接:
https://blog.csdn.net/Angel_asp/article/details/119253052?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-3.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-3.no_search_link

linux命令之xxd学习相关推荐

  1. 在linux命令行 下学习编写java

    对于新手来讲, 使用eclipse 等IDE来学习java是最为方便和效率的. 学习Java能令程序猿深刻地理解面向对象的编程思想 . 但Java 是一个跨平台的编程语言. 本文介绍下在命令行下学习j ...

  2. Linux命令英文全称学习

    感觉对linux命令靠死记硬背挺难的,于是来学习一下全称.  &nbsp:(英文分号)–> 显示空格 Linux基本命令 1.less:第一个就没有找到全称,我太难了... 功能:浏览文 ...

  3. linux命令和vim学习

    文件相关命令 man less:查看less的帮助手册 --help sudo cat /etc/passwd:sudo用于获得ROOT权限而又不用知道ROOT密码 /etc/sudoers 配置su ...

  4. linux命令:xxd读取二进制文件

    帮助文档 l@l-PC:/lib64$ xxd --help Usage: xxd [options] [infile [outfile]] or xxd -r [-s [-]offset] [-c ...

  5. Linux 命令的初学习2

    ROOT:X:0:0:ROOT:/ROOT:/BIN/BASH : 为分隔符  第一个用户名 第二个密码占位(X有密码 !!无密码 删除后无密码登录) 第三个user ID 普通用户ID从500开始 ...

  6. 5个学习Linux命令站点推荐

    虽然人们看不到Linux在桌面市场方面的光明前景,但Linux在服务器方面的份额确实远超过Windows.总起来说,Linux令人最欣赏的一点就是其强大的命令行工具.当然,学习Linux命令需要坚持, ...

  7. 工作中你应该掌握的 linux 命令大全

    作为码农,工作中你一定离不开使用 linux 命令,linux 命令繁多,学习起来确实很累,所以在工作的两年多的时间里,我把自己平时遇到的一些命令都零零碎碎的记录下来,正好这几天有时间对原先的记录做一 ...

  8. linux中php是什么指令,什么是linux命令

    linux命令是对Linux系统进行管理的命令.对于Linux系统来说,无论是中央处理器.内存.磁盘驱动器.键盘.鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命 ...

  9. 使用Linux命令行技术提高工作效率

    这篇文章是当时参加网络系统空间竞赛时老师给的总结性的文章让我们好好看,当时不以为然,觉得没啥好看的,都是些基础的命令. 但是过了两年时间,期间也用了好长时间的Linux系统,在回头看这篇文章时还是能够 ...

最新文章

  1. gps matlab teqc,TEQC multipath metrics in MATLAB
  2. .NET c# Color对象的使用介绍(转)
  3. excel填充工作日
  4. java中volatile_java中volatile关键字的含义
  5. 常用docker命令,及一些坑
  6. CSS显示:内联vs内联块[重复]
  7. Java之映射(map)
  8. java retainAll
  9. 软件测试:什么是图灵测试
  10. 2017-2018-2 1723《程序设计与数据结构》助教总结
  11. C语言实验——交换两个整数的值(顺序结构)
  12. 【已解决】Mysql 存储 emoji 表情报错 Incorrect string value: ‘\xF0\x9F\x98\x82\xF0\x9F
  13. RPG Maker mv框架代码解析之Sprite_Button
  14. 解决kubernetes启动容器时,容器一直是ContainerCreating不能running
  15. MySQL(八):InnoDB 日志缓冲区(Log Buffer)
  16. jquery实现输入框实时统计字数和设置字数限制功能
  17. 计算机反复几次才能启动,电脑连续开机几次才能启动怎么办?
  18. python 脏话处理、特殊词汇过滤!
  19. # 一个礼拜学习Ios7816协议 第一天
  20. HTML5网页设计练习-选择器的应用

热门文章

  1. threejs -实时场景缩影
  2. 批量友情链接监控检测查询工具
  3. tbc 服务器在线,K服TBC服务器《
  4. 浅析HTTP代理原理
  5. 关于参数thresh的理解(pd.dropna(thresh=n))
  6. 1. cv2.threshold(进行阈值计算) 2. 参数type cv2.THRESH_BINARY(表示进行二值化阈值计算)
  7. 基于Halcon学习的一维码识别【八】barcode.param_meas_thresh_abs.hdev
  8. 2021年Java程序员职业规划!吐血整理
  9. 第七章-mapreduce编程实战实验
  10. windows7部署hitchhiker