This chapter introduces UNIX concepts such as the history of the operating system, logging into a system, setting passwords, introduction to shells, and using shells to issue commands to the operating system. The objectives important to this chapter are to:
Note: this book has several errors in it, mainly having to do with screen examples not matching the text. Experiment with any concept that is not familiar to you and with all concepts that are inconsistent (taking care not to crash the system.) Why are we using such a book? I am reminded of Winston Churchill's comment about democracy, that it is a very poor form of government, however, all the others are so much worse.
UNIX is an operating system that, like the C language, was first developed at Bell Labs. There are many versions of UNIX available now. The versions can usually be divided into two major groups: those closely related to the current version of Bell UNIX (SVR4) and those closely related to Berkeley UNIX (BSD), a version developed at the University of California at Berkeley.
There are three major parts to UNIX itself: the kernel, the file system, and the shell. The kernel manages system resources, the file system is a hierarchical tree system, and the shell is the command interpreter.
To log in to a UNIX system, you need an operator id (user name), and a password. Expect to see the word login somewhere in the prompt that lets you log in. Passwords are typically masked when you enter them, so they cannot be seen on the screen. This does not prevent someone from watching your fingers as you type, however, so don't presume that no one knows your password.
Once you are logged in, the system presents you with a prompt or a menu, depending on your user profile. The prompt may be a dollar sign, or a percent sign, depending on which shell you use.
You interact with the system through your current shell, a program that intercepts your keyboard input, translates your input to binary code and communicates that translated input to the system. The system communicates back to you in the same way, binary code to the shell, translation in the shell, and output to you.
Programs on a UNIX system are typically compiled. Compiling translates the source code to binary code and lets the system read and execute the programs directly.
Commands passed to the system through the shell are interpreted by the shell, turned into binary code and passed to the system. This is necessarily slower.
Shell scripts are text files that contain one or more shell commands, which are interpreted by the shell, turned into binary, and passed to the system. It is necessary to decide whether a given system task is better handled by a slower, easily modified script, or by a faster, compiled program.
A shell has several basic features:
There are several shells commonly available:
read srcmeans to take input from the user and store it in the variable src. The user's input is stored as a string.
# is a comment marker in shell scripts. The shell ignores text on a script line after a #.
A useful command that will enable the use of the backspace key is
stty erase ^HGenerate the ^H by holding down the control key and generating a capital H.
The Ls command in UNIX is frequently used to list the contents of the current directory.
Ls -al # means to list with all details
The echo command puts text on the screen.
echo "this is inside quotes to maintain this space" # without quotes, spaces truncate
The accent grave character looks like a back-apostrophe.
It forces execution of the program named inside a pair of such characters.
x=`pwd` # means execute the pwd command and assign the result to variable x
pwd is a command that reports the path to the current directory
To determine which shell you are in, try typing the command
echo $SHELLThe response should tell you which program (sh, csh, ksh or bash) was run to start the shell.
You can switch from one shell to another, but only if the second one exists on your system. This will eat up memory, since it creates another shell session on top of the one you are running. The exit command takes you back one level to the shell you were in. It will log you out if you are not in a second shell. Control-d will also log you out of the current shell.
You may wish to enter more than one command per line. Use semi-colons to separate the commands, or the second and subsequent commands will be taken as parameters of the first.
The passwd command may be used to change your password. Be careful in doing so. It is usually a pain to get the system administrator of a busy system to take time to give you a new one when you forget what you changed it to.
While it is possible in theory to halt the flow of information across your screen with the control-s command, it is neither practical nor recommended to do so. Use of the more command is preferred.
Exit the system with the exit command if possible, and with control-d if not.