Learn programming for good instead of profit
Historical note on Unix, POSIX, and Linux
I'll probably refer to all 3 of these related things throughout this guide, so I'll briefly explain them here.
Unix was an operating system made in 1969. No one uses the original Unix anymore, but it spawned a family of derivatives which ultimately led to both Linux and Mac (but not Windows).
In 1988, some people published a standard called POSIX (Portable Operating System Interface), which was meant to standardize common aspects of all the Unix derivatives floating around at the time. POSIX specifies things like what syscalls the operating system supports and how its command shell works. If your operating system works the way POSIX describes, it's called a POSIX-compliant or POSIX-conforming system. The idea was that if you wanted to write a program that could run on all POSIX-conforming systems, you just had to stick to using only the interfaces defined by POSIX. And if you wanted to write an operating system that could run all POSIX programs, you just had to implement the POSIX interfaces.
Linux isn't technically derived from Unix (it was written from scratch), but it was designed to be like Unix. It is *mostly* POSIX-compatible. There are some other surviving Unix derivates like the BSD family (FreeBSD, OpenBSD, and a few others) which are also open source, and more faithful to POSIX than Linux is. Mac was derived from FreeBSD.