Kawały textowe UNIX














A Brief Introduction to Unix

With Emphasis on the Unix Philosophy

And How to Apply it to Do Your Work






by

Corey Satten
corey@cac.washington.edu
Networks and Distributed Computing, CAC
University of Washington, HG-45
Seattle, Washington 98195







Overview

Unlike a traditional introduction to Unix, the emphasis of
this one is on philosophy and brevity. When you understand how
the creators of Unix intended you to use it, you'll approach Unix
on it's "best side". This introduction intends to help a new
Unix user get started on the right foot quickly. For more infor-
mation, readers are referred to the Unix manuals and other listed
references. As little detail as possible has been duplicated
from the manual.






Copyright (C) 1989, University of Washington

Commercial use of this document requires permission from NDC













Version 1.24 - last modified July 27, 1989


1. Why Use Unix?

In some ways, Unix is "old technology" - it was invented in
the late 1960's for a small computer with a 64K-byte address
space, it is largely character oriented (not graphic). Why is it
still here? Why is it spreading to more and more systems from
PC's to Cray Supercomputers? One answer is that Unix is written
in a mostly machine independent way (in the high level
language "C") and is therefore more easily moved to new machines.
Once Unix has moved, a large base of applications also moves
easily and your investment in learning Unix continues to pay off.
Another answer is that many problems are still character oriented
(or at least can be approached that way) and for these problems,
like a sharp tool in the hands of a skilled user, Unix really
helps you get your work done. Also, you can use Unix from any
kind of terminal and over dial-up phone lines or computer network
connections.

In the space below, I hope to convey, with a minimum of
specific information, the essence of "The Unix Philosophy" so
that you can use and enjoy Unix at its best. To try to summarize
in just two sentences (for those who really believe in such brev-
ity): Unix comes with a rich set of connectable tools which,
even if they don't directly address the problem at hand, can be
conveniently composed (using the programmability of the command
interpreter) into a solution. Unix also imposes relatively few
arbitrary limits and assumptions on the user or the problem
domain and has thereby proven to be a suitable platform on which
to build many useful and highly portable research and commercial
applications.

2. Essential Commands and Concepts

Before I can realistically hope to say more about Unix in
general, or give meaningful examples, I must briefly explain some
Unix commands and concepts. These descriptions are intentionally
minimal. You will soon see how to find more detail in the manu-
als.

2.1. Login

Unix is a multi-user operating system. This means that
several users can share the computer simultaneously. To protect
each user's data from damage by other users, Unix requires each
user "login" to the system to identify him/herself (with a login
name) and authenticate him/herself (with a password). During the
login process, a user's defaults and "terminal type" are usually
established. The mechanism Unix uses to allow concurrent users
also allows each user to have more than one program (also called
"process" or "commands") running concurrently. You will see
shortly how convenient this is.






- 1 -








2.2. The Shell, Commands and Arguments

Once you have logged in, you will be running a program
called your "login shell". The shell is a program which executes
the commands you type in and prompts you when it is ready for
input. One of the nice features of the Unix shell is that it is
a powerful programming language unto itself, however one need not
program it to use Unix. There are several different "shell" pro-
grams in common use: csh (c-shell), sh (bourne-shell), ksh
(korn-shell), vsh (visual-shell) to name a few. Most people use
"csh".

Unix commands consist of a program name followed by options
(or arguments) to that program (if any). One or more spaces fol-
low the program name and separate arguments. Each program exam-
ines its argument list and modifies its behavior accordingly. By
convention, arguments which begin with a dash are called
"switches" or "flags" and they are used to request various non-
default program behavior or to introduce other arguments. It is
occasionally important to remember that it is the shell which
does filename expansion (such as turning "*.old" into "a.old
list.old program.old"). Programs normally don't ever see un-
expanded argument lists. Many Unix programs can also take impli-
cit arguments. These are available (to every program you run)
via the "environment". Your "terminal type", stored in an
environment variable called TERM, is an example of this. The
manual for each program you use should list the environment vari-
ables it examines and the manual for your shell explains environ-
ment variables in detail.

2.3. On-line Manuals

Before getting into any specific commands and examples, note
that most Unix systems have both on-line and printed manuals.
Many commands will be mentioned below in passing without explana-
tion. It is assumed that the interested reader will look them up
in the manual.

The on-line manuals generally contain only the numbered sec-
tions of the printed manuals. The tutorials and in-depth arti-
cles are usually only in printed form. This introduction intends
to reproduce as little of the information contained in the Unix
manuals as possible. For more information on any Unix command,
type "man command" ("man man", for example gets you "the man-
page" for the on-line manual command: man). (Note: if you are
prompted with the word "more", you are interacting with the
"more" program. Three quick things to know: you may type a space
to get the next screenful, the letter "q" to quit, or "?" for a
help screen.)

Among other things, the man-page for the "man" command
points out that "man -k word" will list the summary line of all
on-line man-pages in which the keyword: word is present. For
example, "man -k sort", will produce something like this:



- 2 -








comm (1) - select or reject lines common to two sorted files
look (1) - find lines in a sorted list
qsort (3) - quicker sort
qsort (3F) - quick sort
scandir, alphasort (3)- scan a directory
sort (1) - sort or merge files
sortbib (1) - sort bibliographic database
tsort (1) - topological sort

This tells you that section 1 (user commands) of the manual has
man-pages for comm, look, sort, sortbib, tsort. Use the man com-
mand on any of these to learn more. The other numbered sections
of the Unix manual are for system calls, subroutines, file for-
mats, etc. You can find out about each section of the manual by
saying, for example, "man 2 intro". Enough about manuals.

2.4. I/O re-direction: stdin, stdout, stderr, pipes

By convention, whenever possible, Unix programs don't expli-
citly specify from-where to read input or to-where to write out-
put. Instead, programs usually read from "standard input" (stdin
for short) and write to "standard output" (stdout). By default,
standard input is the keyboard you logged in on and standard out-
put is the associated display, however, the shell allows you to
re-direct the standard output of one program either to a "file"
or to the standard input of another. Standard input can be simi-
larly redirected. Perhaps Unix's greatest success comes from the
ability to combine programs easily (by joining their standard
inputs and outputs together forming a pipeline) to solve poten-
tially complex problems.

"Standard error" (stderr) is not usually re-directed, hence
programs which write warnings, prompts, errors, etc. to stderr
will write them to the display even when normal input and output
is usefully re-directed. (Note that since I/O devices are imple-
mented as files on Unix, I/O re-direction also works to and from
physical devices.) The syntax for I/O re-direction is fully
described in the manual for the shell you are using (probably
csh).

The following are some simple examples of I/O re-direction.
For clarity, the shell's ready-for-input-prompt has been shown as
"Ready%" and explanations have been inserted in italics. Every-
thing the user would type is shown in slightly bold type after
the Ready% prompt.

Running the "date" command prints today's date and time on stan-
dard output
Ready% date
Wed Mar 22 13:06:30 PST 1989
Ready%
Put the standard output from the date command in a file called "myfile"
Ready% date > myfile
Ready%



- 3 -








Use the word-count program to count the number of lines, words,
characters in "myfile"
Ready% wc < myfile
1 6 29
Ready%
Pipe the output of the date command directly into the word count
command. Note that commands in a pipeline such as this can run
simultaneously.
Ready% date | wc
1 6 29
Ready%
Use output from one program as command line arguments to another
Ready% echo My computer, `hostname`, thinks today is `date`
My computer, samburu, thinks today is Wed Mar 22 13:06:30 PST 1989
Ready%
Look in the on-line dictionary for words beginning with "pe" and
count how many are found
Ready% look pe | wc
294 294 2548
Ready%
Pipe those 294 lines through cat -n to insert line numbers and
then through sed to select only lines 5-8
Ready% look pe | cat -n | sed -n 5,8p
5 peaceful
6 peacemake
7 peacetime
8 peach
Ready%
Now, from those 294 words, select only those containing "va"
somewhere and re-direct them into the argument list of the echo
command
Ready% echo I found these: `look pe | grep va`.
I found these: Pennsylvania Percival pervade pervasion pervasive.
Ready%
Grep (search) through all files with names ending in ".c" for
lines beginning with "#define". (Grep -l lists the file names
containing the lines which match instead of the lines them-
selves). These file names are redirected to form the command
line of the vi editor - hence, edit all ".c" files which contain
"define" statements.
Ready% vi `grep ^#define *.c`
The depiction of an interactive session with the "vi" editor is
omitted.
Ready%

2.5. Special characters: Interrupt, End-Of-File, Quoting, `Job
Control'

When a program reads from a file or from a pipe it can tell
when there is no more to read. This condition is called reading
the "end-of-file" or EOF. When standard input is a terminal, the
EOF must be explicitly typed because the program must otherwise
assume you are still typing. Normally EOF is typed as a
CONTROL-D (indicated in print as ^D). Think of the control key
as another SHIFT key - it must be pressed and held when the D is


- 4 -








typed. If the EOF is not the first thing on a line, two must be
typed.

If you are running a program and you wish to interrupt it
completely, you can often do so by typing ^C. You can try this
with the "wc" program:

run wc then interrupt it
Ready% wc
sample input
^C
Ready%
run wc then type EOF
Ready% wc
sample input
^D
1 2 13
Ready%

Note that both ^D and ^C ended the program however, ^D allowed
the program to finish normally but ^C killed it (and produced no
output). If, for some reason, you want to type a special charac-
ter such as ^C and actually have it sent to your program and not
generate an interrupt, you can "quote it" by typing a backslash
(or sometimes a ^V) before it. The backslash also "quotes" shell
"meta-characters" such as asterisk, question mark, double-quote,
backslash, etc.

"Job control" is the name given to an extremely convenient
feature of many modern versions of Unix. Job control allows one
to suspend a program and resume it later. If you are in the mid-
dle of running some program when the phone rings, you can type ^Z
to suspend the program (and get back to your shell prompt)
without interrupting or exiting that program. After you handle
the phone call, you can type "fg" to resume the original program
right where you left off. Unix permits one to have a fairly
large number of suspended jobs and to resume them in any order.
Csh's "jobs" command displays which jobs are stopped. (In some
ways, job control is "a poor man's window system"; however, even
on Unix systems with windows, many people find job control
indispensable.) For more information on job control, see the
"csh" man-page.

2.6. Files, permissions, Search PATH

Unix files exist in directories. Every user has a "home
directory", which is the "current directory" after logging in. A
user can make "sub directories" with the "mkdir", command and
make them the current directory with the "cd" command. You can
print your current directory with the "pwd" command and you can
refer to the parent directory as ".." (two dots). You can get
back to your home directory by typing "cd" with no arguments.

Files and directories have permissions called "modes" which
determine whether you, "your group", or everyone can: read,


- 5 -








write, or execute the file. Permissions are changed with the
"chmod" command. The main reason for bringing this up now is to
point out that a collection of commands which can be typed to the
shell can also be put in a file, given a name, made executable
and subsequently invoked as a new command by that name. This
type of file is called a "shell script" and is one of the main
ways Unix is customized to the work habits and chores of its
users.

When a user types a command, s/he usually doesn't type the
full (and unambiguous) path name of the program: (/bin/date for
example) but instead types only the last component of the path
name, date, thus requesting the system to search for it. To
achieve predictability and efficiency, the system searches only
those directories listed in your PATH environment variable and it
searches them in that order. By placing your own version of a
program in a directory you search before the system directories,
you can override a system command with your own version of it.
Your version can be anything from an entirely different program
to a simple shell script which supplies some arguments you always
use and then calls the standard version. The command
"echo $PATH" will print the value of the PATH environment vari-
able to stdout. The procedure for setting environment variables
such as PATH differs from shell to shell. See the man-page for
the shell you use.

3. The Unix Philosophy

Well, so much for the nitty-gritty. I will now try to
explain "The Unix Philosophy" in a bit more detail. Basically,
the idea is that rather than have a custom program for each lit-
tle thing you want to do, Unix has a collection of useful tools
each of which does a specific job (and does it well). To get a
job done, one combines the pieces either on the command line or
in a shell script. For example, on Unix, a user would not expect
an application to provide an input text editor. Instead, one
would expect to be able to use one's favorite (and standard)
"text editor" (probably "vi", perhaps "emacs") for all instances
of editing text. Electronic mail, C programs, shell scripts,
documents-to-typeset can all be edited with the same text editor.
By convention, applications invoke the text

Error


Unable to load requested item for reason: -201


Wyszukiwarka

Podobne podstrony:
Kawały textowe MATURA
Kawały textowe PIOS
Kawały textowe SLOWNIK
Kawały textowe opornografiislowkolka
Kawały textowe MURPHY
Kawały textowe PZU
Kawały textowe STOSUNEK
Kawały textowe Po czym poznac
Kawały textowe nie chce isc do wojska
Kawały textowe SMURFY
Kawały textowe POLSKA
Kawały textowe MIKOLAJ2
Kawały textowe PENIS
Kawały textowe polowanie
Kawały textowe SLOWNIK2
Kawały textowe Pierdy
Kawały textowe PIWO
Kawały textowe piwo howto
Kawały textowe Kura

więcej podobnych podstron