Unix shell is an amazing tool and once you get used to it, it has unlimited power. However with that unlimited power comes unlimited responsibility to use it wisely. That however poses a problem of learning all of the unix commands (and there are a lot). The usual pattern of learning new commands is Googling for particular solution and then adapting it to your problem. However some solutions involve some very complicated shell expressions which takes 2 hours to decipher them. Recently I came across explainshell (github) which solves just that. You just enter any shell expression and it explains all the bits and pieces of it in a human-fiendly way (unlike reading man pages manually).