digging through the build system for the hyperledger fabric distributed ledger technology, and noticed something in the Makefile i'd never seen before that took me a couple seconds to recognize: .PHONY: clean clean: docker-clean unit-test-clean release-clean -@rm -rf build ||: .PHONY: clean-all clean-all: clean gotools-clean dist-clean -@rm -rf /var/hyperledger/* ||: i thought, what's with that "||:" at the end of those rm commands, then it dawned on me that it just means if the command fails, continue and run the "true" command; in other words, if the rm command fails, keep going. but what is the value of that, given the leading "-" for the command, which i understood to mean the same thing? isn't that overkill? this question at SO: https://stackoverflow.com/questions/7772393/gnu-make-run-a-target-after-all-others-regardless-of-failures has an answer that pretty clearly suggests "||:" is a bit silly when a leading "-" does the same thing and more obviously? thoughts? rday p.s. in those two cases, even the "-" is superfluous since "rm -rf" can't fail, even if the file or directory doesn't exist.