There's also Jesper Kenn Olsen who ran around the world twice; first eastwards, then southwards/northwards: https://en.wikipedia.org/wiki/Jesper_Olsen_(runner)
14 karma · joined September 12, 2014
If there is only one scalar argument, the argument is checked for shell metacharacters, and if there are any, the entire argument is passed to the system's command shell for parsing (this is "/bin/sh -c" on Unix platforms, but varies on other platforms). If there are no shell metacharacters in the argument, it is split into words and passed directly to "execvp", which is more efficient.
So your example does not invoke the shell.
I did keep a log file with the output from cp, and it clearly identified the filenames for the inodes with bad blocks. Actually, I'm not sure how dd would handle bad blocks.