The od (octal dump) command is a versatile tool that outputs the contents of a specified file in various formats such as octal, decimal, hexadecimal, floating-point numbers, or ASCII characters. It displays the content to the standard output (usually the terminal), with the leftmost column showing the byte offset, starting from 0.
Function:
The od command outputs file content in various formats like octal, decimal, hexadecimal, floating-point, or ASCII, with the byte offset displayed in the leftmost column. It can handle both text and binary files and is typically used to view file data that cannot be directly displayed in the terminal, such as binary data. The command can interpret the file content and output its values in various formats, whether they are IEEE754 floating-point numbers or ASCII codes. You might also want to check out the hexdump command, which by default outputs data in hexadecimal format but isn’t as powerful as od.
Syntax:
od [OPTION…] [FILE…]Key Options:
- -A RADIXor- --address-radix=RADIX: Specifies the radix (base) for the byte offset. By default, the offset is displayed in octal.
- -j BYTESor- --skip-bytes=BYTES: Skips the specified number of bytes before displaying the file content.
- -N BYTESor- --read-bytes=BYTES: Outputs only the specified number of bytes.
- -S [BYTES]or- --strings[=BYTES]: Outputs strings at least- BYTESbytes long (default is 3).
- -vor- --output-duplicates: Ensures that duplicate data is not omitted in the output.
- -w [BYTES]or- --width[=BYTES]: Sets the number of bytes to display per line (default is 32 bytes).
- -t TYPEor- --format=TYPE: Specifies the format of the output. Options include:- a: Named characters (e.g., newline is shown as “nl”).
- c: Printable characters or escaped sequences (e.g., newline is shown as “\n”).
- d[SIZE]: Signed decimal integers of SIZE bytes (default is- sizeof(int)).
- f[SIZE]: Floating-point numbers of SIZE bytes (default is- sizeof(double)).
- o[SIZE]: Octal integers of SIZE bytes (default is- sizeof(int)).
- u[SIZE]: Unsigned decimal integers of SIZE bytes (default is- sizeof(int)).
- x[SIZE]: Hexadecimal integers of SIZE bytes (default is- sizeof(int)).
 - SIZEcan be specified as 1 (byte), or as uppercase letters like C (char), S (short), I (int), and L (long). For floating-point numbers,- SIZEcan be F (float), D (double), or L (long double).
- --help: Displays help information.
- --version: Displays version information.
Parameters:
- FILE…: One or more files whose content will be displayed.
Examples:
Example 1: Basic Output
$ cat test.txt
abcd 12345
$ od test.txt 
0000000 061141 062143 030440 031462 032464 000012
0000013In this output, the first column shows the byte offset (default in octal).
Example 2: Show Byte Offset in Decimal
$ od -Ad test.txt 
0000000 061141 062143 030440 031462 032464 000012
0000011Example 3: Hide Byte Offset
$ od -An test.txt 
 061141 062143 030440 031462 032464 000012Example 4: Output in Hexadecimal (4 Bytes per Group)
$ od -tx test.txt 
0000000 64636261 33323120 000a3534
0000013Example 5: Output in Hexadecimal (1 Byte per Group)
$ od -tx1 test.txt
0000000 61 62 63 64 20 31 32 33 34 35 0a
0000013Example 6: Display Named ASCII Characters
$ od -ta test.txt
0000000   a   b   c   d  sp   1   2   3   4   5  nl
0000013Or display printable characters and escape sequences:
$ od -tc test.txt
0000000   a   b   c   d       1   2   3   4   5  \n
0000013Example 7: Hexadecimal with Original Characters
$ od -tcx1 test.txt
0000000   a   b   c   d       1   2   3   4   5  \n
         61  62  63  64  20  31  32  33  34  35  0a
0000013Example 8: Specify Bytes per Line
$ od -w8 -tc test.txt
0000000   a   b   c   d       1   2   3
0000010   4   5  \n
0000013Example 9: Remove Spaces Between Columns
To remove spaces between columns during od output:
- Use -Anto hide the offset.
- Use -vto avoid omitting duplicate data.
- Use -tx1to output one byte per group in hexadecimal format, and-w1to display one byte per line.
- Finally, pipe the output to awkto concatenate it into a single line.
$ od -An -w1 -tx1 test.txt | awk '{for(i=1;i<=NF;++i){printf "%s",$i}}'
616263642031323334350a