Using XXD Command in Linux
Discover how to use the XXD command in Linux with practical examples. This comprehensive guide will help you understand the features and functionality of XXD.
Want a Hexadecimal dump (a hexadecimal view) of your data? The xxd command can do that for you.
Like any other normal command, it takes data from the standard input or file and gives hexadecimal output. It can also do the opposite and convert hex to normal characters.
And in this tutorial, I will walk you through different examples of how to use the xxd command in Linux.
The xxd utility is not pre-installed in most Linux distributions but can easily be installed with the default package manager.
For Ubuntu/Debian base:
sudo apt install xxd
For Fedora/RHEL base:
sudo dnf install vim-common
For Arch-based distros:
sudo pacman -S xxd
Once you are done with the installation, you have to follow the given command syntax to use the xxd command:
xxd [options] [file]
To make things easy to understand, I will be using the file named
Sample.txt throughout the tutorial, which contains the following:
Which Linux distro is your daily driver? 1. Ubuntu 2. Debian 3. RHEL 4. Fedora 5. Arch 6. Gentoo 7. LFS (The GOAT)
To create a hex dump of the
Sample.txt file, I will be using the following command:
Sure, you can use different options to tweak the default behavior of the xdd command. Let me show you how.
The xxd command allows you to trim down lines from your output.
To do so, you will have to use the
-s flag and append how many initial lines you want to skip:
xxd -s [lines_to_skip] Filename
So let's say you want to start the hex dumping from the 5th line, which means you need to trim down the first 4 lines:
xxd -s 0x40 Sample.txt
And as you can see, it trimmed the first 4 lines and gave me the hex dump starting from the 5th line.
But if you want to get the hex dump of the last few lines, you can do that too!
To get the hex dump of the last n number of the lines, you will have to execute the xxd command in the following manner:
xxd -s -[Last_n_lines] Filename
So let's say I want to get the hex dump of the last 3 lines, then, I will be using the following:
xxd -s -0x30 Sample.txt
You may want to specify how many columns should be shown instead of what xxd gets you by default (10).
To do so, you will need to use the
-c flag and append how many columns should be displayed on the output:
xxd -c [No_of_columns] Filename
Let's say I want the output in 4 columns, then I will be using the following:
xxd -c 4 Sample.txt
It is similar to what I explained in how you can trim the output but here, you can specify how many lines of the output you want from the first line.
To specify the output length, all you have to do is use the
-l flag and specify how many lines of output you want:
xxd -l [Output_length_in_lines] Filename
So let's say I only want the first 5 lines of the hex dump, then I will be using the following:
xxd -l 0x50 Sample.txt
The xxd command also allows you to get output in binary instead of hexadecimal!
It is quite simple and the binary output can be achieved using the
xxd -b Filename
Here, I converted my text file
Sample.txt to binary:
xxd -b Sample.txt
You may find situations where you want the output in capital letters.
And you can easily get the hex output in capital letters using the
-u flag as shown:
xxd -u Filename
So if you redirected the output of the hex to a file, there is a way to get back to normal quite easily.
For your reference, I'm redoing the whole process of how you can redirect the output of the hex dump to the text file first:
So I saved the hex dump output to the
Now, if I want to read the content of the
Hex.txt, I will have to perform the conversion. Otherwise, it is just a pain in the head.
To reverse this effect, you will have to use the
-r flag in shown manner:
xxd -r Filename
If you want to convert hex string to ASCII, we have a detailed guide for that purpose:
I hope you will find this guide helpful.
And if you have any queries, let me know in the comments.