shred is one of the coreutils, and is a mixed blessing, from my standpoint.
On the one hand it does a good job not just erasing, but nullifying any file you feed it. As you can see above.
And you have the option of multiple passes, overwriting zeroes, and a few other weapons of data destruction.
So in that sense, it is a very good solution for permanent data erasure.
On the other hand, as the help flag and the man page suggest, there exist filesystems that may make
shred somewhat pointless.
As I understand it, filesystems that employ journaling or some manner of redundancy may still contain data from the shredded file, somewhere in their structures.
And that’s most modern filesystems, probably.
It’s something you should research personally before you rely on
shred … or another file-kill utility, for that matter.
For the example in the screenshot, I wrote out a 200Mb+ file with
< /dev/urandom tr -dc A-Za-z0-9 | head -c20480000 testfile.txt
on an ext2 filesystem. As you can see, not only did
shred overwrite the file, but also filled it with null characters, making the final
head command rather pointless.
Enjoy your newfound superpowers. 😈