Resources: Linux
There are many aspects to a Linux system.
-
At the lowest level, it is an operating system kernel that
implements the
POSIX
API (Application Programmer Interface) via system calls or
traps. Basic components include processes, file systems, and
networking. This is documented in section 2 of the online
manual
(
man
).
-
Supporting the system calls are programming languages and
higher-level libraries (section 3 of the
man
pages).
-
Linux is also is the complete set of myriad utility programs,
scripting languages, and editors that allow useful work to be
performed (section 1 of the
man
pages).
-
The CLI (Command-Line Interface), aka
"the shell". There are a variety of shell programs, the most
common of which are
Shell programs have no special capabilities to interact with the
system beyond those of any application program. The heavy
lifting is done through the same system calls and libraries
accessible to any other application. While shells are designed
to manage the execution of other programs, most shells provide
some programming capabilities, including loops and
conditionals. A shell
script
is typically a program that invokes other programs with control
flow based on the
exit status
of those programs.
One of the key concepts in Unix-based systems is the pipeline,
where output from one program can be fed as input to
another. A filter is a (typically small, single-function) utility
program that is designed to work in a pipeline with other program.
The Perl programming language was insprired by the Unix utilities
and many of the utilities can be replaced by a short, often
single-line, Perl
script.
It's worthwhile to learn both vi (or its modern incarnation, vim)
and emacs because both are designed to maximize programmer
efficiency, based on different approaches (vi based on minimizing
keystrokes and emacs based on programmability). With minimal
understanding, vi looks ugly and confusion; with deeper
understanding it looks positively elegant. Even if you prefer an
IDE like Visual Studio or Eclipse, it is worthwhile learning vim.
Books
Web