Few aspects of Unix system administration are more intimate than the relationship between the admin and their chosen shell. After all, the shell is the most fundamental interface to the system, the conduit for all command-line interactions. Thus, it's important to have a solid foundation in whatever shell you choose.
There are many different shells available, from Ash to Zsh. They all differ in many ways, and some (such as Csh and Tcsh) vary wildly from the others. Each has its selling points. However, because Bash has become the de-facto standard shell on most Unix-like operating systems and can generally be found everywhere, it makes an excellent place to start, even if you ultimately choose a different shell for daily use.
This is not designed to be an exhaustive tutorial, but is structured to introduce you to shells in general and Bash in particular, touching on many common aspects and elements of the shell. It is intended to provide a basic understanding of Bash, from the shell prompt to beginning scripting.
Command-line essentials
When you ssh into a Unix-like system, the system looks up your user account information and spawns a new shell process based on your preferences. This shell process is then connected to the ssh session, and you've logged into the system. The shell then presents you with a prompt:
[myname@lab1 ~]$
This prompt is fully configurable, and the different distributions have different ways of presenting it. Without any configuration, the prompt would simply be $
. The dollar sign signifies that the shell session has the privileges of a regular user, not a privileged user or administrator. If you log in to a root shell, the dollar sign changes to a hash:
[root@lab1 ~]#
The prompts above contain the username, the @
symbol, and the hostname of the system, followed by the current working directory. In this case, we're in our home directory, which is represented by the tilde. There are all kinds of ways that you can modify your prompt to better suit your workflow. The settings are stored in the PS1 environment variable. The prompt shown above is constructed like this:
[\u@\h \W]\$
This means that the shell expands \u
to the username, \h
to the hostname, and \W
to the working directory. Other special characters can be added to the prompt as well. You can find a list in the Bash man page (more on that later).
But we now have a Bash prompt, and we can start using the shell to navigate around the system.
The basic file system navigation command is cd
, short for "change directory." This is fairly self-explanatory, though note that cd ..
will move you down a directory in the tree and just cd
(when not followed by a directory name) will return you to your home directory. The other most common file system interaction is ls
, short for "list." The ls
command will show the files and directories within the current working directory.