Advanced UNIX encompasses a wide range of topics. This book concentrates on problem solving; it is primarily a book on UNIX programming. Since UNIX is an operating system (a very powerful, elegant, comprehensive, and popular operating system), the phrase "Unix programming" may seem a bit odd. But, unlike most operating systems, UNIX is highly programmable. Programming is providing a sequence of instructions to accomplish a given task, and UNIX offers several ways to do that. First, through pipes and redirection, UNIX lets you combine simple UNIX commands into more complex ones. Second, the UNIX shell, a program that acts as an interface between the user and the operating system proper, is programmable. It offers the basic features of most conventional computer languages (variables, loops, decision making), using UNIX commands as its basic building blocks. Third, because UNIX itself is written largely in the C programming language, there is a very extensive interface between the UNIX system and c programs, making C the language of choice for UNIX programming projects.