The Unix Programming Environment by Brian W. Kernighan

A concise, practical introduction to the Unix way of developing software, emphasizing small, composable tools and text-oriented interfaces; it explains the shell as a programming environment, demonstrates key utilities and techniques for editing, filtering, and transforming data, and covers file and process control, debugging, and program-building tools so readers learn to design, implement, and maintain robust, portable programs by composing simple, well-defined components.

Purchase from Bookshop.org