On 18/05/18 07:49, Daniel Kahn Gillmor wrote: > Hi GNU coreutils developers! > > This is a feature request for the hashing/digesting tools in coreutils, > like sha256sum, sha1sum, md5sum, etc. > > currently, those tools emit line-oriented output about the files that > they hash. if a file has a newline in the name, those tools emit output > with a leading /, like so: > > 0 dkg@alice:~$ sha256sum a* > 348df4eb47f9230bfe89637afe7409bec883424d822257b6cbbce93ee780d992 a > 98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4 a b > \98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4 a\nb\n > 0 dkg@alice:~$ > > most users of sha256sum (etc) in shell scripts probably are unaware of > this behavior and just cross their fingers and hope no file has a > newline in its filename. > > However, other common tools have processing options that use > NUL-terminated records. For example, sort (-z) and find (-print0) and > xargs (-0) > > It would be nice if sha256sum (etc) had a comparable functionality to be > able to fit better into pipelines with these other tools. > > So i'm proposing a flag -z, --zero-terminated for these tools that > alters the output (and input) format, to use NUL chars instead of > newlines. presumably when that flag is used, the emitted data should > *not* be backslash-escaped. I used --zero rather than --zero-terminated like other tools that only change _output_ format with -z, rather than supporting it also as an _input_ format. It would complicate the processing to support --check of input with --zero, with no added functionality. Having --check support this format, would also an incompat with older versions of these tools. As an example of processing now possible, the following would robustly pass duplicate files to xargs for processing: $ md5sum src/md5sum.{c,c} -z | sort -z | uniq -z -d -w32 | cut -z -c35- | xargs -r0 src/md5sum.c cheers, Pádraig