Linux命令 —— od


玩linux系统没多久,发现了一个奇怪的地方:我通过 vim 向文件内输入一串字母“abcd”,结果发现文件大小为5字节。很奇怪,便去问群友。照着他们的建议,又写了一个程序将文件中的字符按 ASCII 码挨个读出来,结果发现多出的一字节是结尾的换行符 '\n' 。

刚才无意间又看到一个 linux 命令 od ,起作用就是按照一定的格式将文件内容打印出来。下面是手册中截下来的用法:

od [OPTION]... [FILE]...
od [-abcdfilosx]... [FILE] [[+]OFFSET[.][b]]
od --traditional [OPTION]... [FILE] [[+]OFFSET[.][b] [+][LABEL][.][b]]

运用该命令,只需要键入“od -c test.txt” 便可以得到文件中的准确信息了:

0000000   a   b   c   d  \n
0000005

选项 -c 相当于 -t c ,表示输出可打印字符和转义字符。最左边的一串数字为该行起始位的文件偏移量。

 

以下是完整的选项说明和输出类型的说明:

       Write  an  unambiguous  representation, octal bytes by default, of FILE to standard output.  With more than one FILE argument, concatenate them in the listed order to form
       the input.

       With no FILE, or when FILE is -, read standard input.

       If first and second call formats both apply, the second format is assumed if the last operand begins with + or (if there are 2 operands) a digit.  An OFFSET operand  means
       -j  OFFSET.   LABEL is the pseudo-address at first byte printed, incremented when dump is progressing.  For OFFSET and LABEL, a 0x or 0X prefix indicates hexadecimal; suf-
       fixes may be . for octal and b for multiply by 512.

       Mandatory arguments to long options are mandatory for short options too.

       -A, --address-radix=RADIX
              output format for file offsets; RADIX is one of [doxn], for Decimal, Octal, Hex or None

       --endian={big|little}
              swap input bytes according the specified order

       -j, --skip-bytes=BYTES
              skip BYTES input bytes first

       -N, --read-bytes=BYTES
              limit dump to BYTES input bytes

       -S BYTES, --strings[=BYTES]
              output strings of at least BYTES graphic chars; 3 is implied when BYTES is not specified

       -t, --format=TYPE
              select output format or formats

       -v, --output-duplicates
              do not use * to mark line suppression

       -w[BYTES], --width[=BYTES]
              output BYTES bytes per output line; 32 is implied when BYTES is not specified

       --traditional
              accept arguments in third form above

       --help display this help and exit

       --version
              output version information and exit
       -a     same as -t a,  select named characters, ignoring high-order bit

       -b     same as -t o1, select octal bytes

       -c     same as -t c,  select printable characters or backslash escapes

       -d     same as -t u2, select unsigned decimal 2-byte units

       -f     same as -t fF, select floats

       -i     same as -t dI, select decimal ints

       -l     same as -t dL, select decimal longs

       -o     same as -t o2, select octal 2-byte units

       -s     same as -t d2, select decimal 2-byte units

       -x     same as -t x2, select hexadecimal 2-byte units
       a      named character, ignoring high-order bit

       c      printable character or backslash escape

       d[SIZE]
              signed decimal, SIZE bytes per integer

       f[SIZE]
              floating point, SIZE bytes per float

       o[SIZE]
              octal, SIZE bytes per integer

       u[SIZE]
              unsigned decimal, SIZE bytes per integer

       x[SIZE]
              hexadecimal, SIZE bytes per integer

       SIZE is a number.  For TYPE in [doux], SIZE may also be C for sizeof(char), S for sizeof(short), I for sizeof(int) or L for sizeof(long).  If TYPE is f, SIZE may also be F
       for sizeof(float), D for sizeof(double) or L for sizeof(long double).

       Adding a z suffix to any type displays printable characters at the end of each output line.

更多内容参考手册

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值