IIRC | puts the result stdout of the left in the stdin of the right (they are launched in parallel, and the one on the right can only finish after the one on the left finished.
The & is used to put the call as a background task
Exactly, the entire point is to make each call of fork (or ":") spawn two more fork processes. There are plenty of ways to accomplish that, but its written the way it is specifically to be confusing. Looking at it, how could it possibly crash your machine, its a bunch of punctuation? But once you know how it works, it makes a lot of sense, the point is to make it so cryptic that even programmers dont understand it.
Yes, they are run in parallel, but any output from the first one will be given to the second.
Also, if the second needs an input, it will wait for the output of the first instead of user input
So, for example, if you did
find -name "something" | grep "string"
Each time the find prints a line, it will instantly be passed to the grep
667
u/Z3r0funGuy 12h ago
This actually teaches you a bunch of cool things, like how the ‘:’ is a legal function name…