Source: https://www.lpthe.jussieu.fr/~teber/Teaching/cours-unix-A.pdf