summaryrefslogtreecommitdiffstats
path: root/bin/csh/USD.doc/csh.1
diff options
context:
space:
mode:
authoruqs <uqs@FreeBSD.org>2010-12-04 10:11:20 +0000
committeruqs <uqs@FreeBSD.org>2010-12-04 10:11:20 +0000
commit9242c645f81d22058934688725f1fff0bc88cb64 (patch)
treea39140e4d881fbba4f04ac77974bfbb05df9d360 /bin/csh/USD.doc/csh.1
parent06cd6f2bc1f94f941b57ef92ed6445529822669b (diff)
downloadFreeBSD-src-9242c645f81d22058934688725f1fff0bc88cb64.zip
FreeBSD-src-9242c645f81d22058934688725f1fff0bc88cb64.tar.gz
Move most of the remaining USD/PSD/SMM papers into share/doc
Diffstat (limited to 'bin/csh/USD.doc/csh.1')
-rw-r--r--bin/csh/USD.doc/csh.11012
1 files changed, 0 insertions, 1012 deletions
diff --git a/bin/csh/USD.doc/csh.1 b/bin/csh/USD.doc/csh.1
deleted file mode 100644
index 915cb23..0000000
--- a/bin/csh/USD.doc/csh.1
+++ /dev/null
@@ -1,1012 +0,0 @@
-.\"-
-.\" Copyright (c) 1980, 1993
-.\" The Regents of the University of California. All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\" 4. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" @(#)csh.1 8.1 (Berkeley) 6/8/93
-.\" $FreeBSD$
-.\"
-.EH 'USD:4-%''An Introduction to the C shell'
-.OH 'An Introduction to the C shell''USD:4-%'
-.\".RP
-.TL
-An Introduction to the C shell
-.AU
-William Joy
-(revised for 4.3BSD by Mark Seiden)
-.AI
-Computer Science Division
-.br
-Department of Electrical Engineering and Computer Science
-.br
-University of California, Berkeley
-.br
-Berkeley, California 94720
-.AB
-.I Csh
-is a new command language interpreter for
-.UX
-systems.
-It incorporates good features of other shells and a
-.I history
-mechanism similar to the
-.I redo
-of \s-2INTERLISP\s0.
-While incorporating many features of other shells which make
-writing shell programs (shell scripts) easier,
-most of the features unique to
-.I csh
-are designed more for the interactive \s-2UNIX\s0 user.
-.PP
-\s-2UNIX\s0
-users who have read a general introduction to the system
-will find a valuable basic explanation of the shell here.
-Simple terminal interaction with
-.I csh
-is possible after reading just the first section of this document.
-The second section describes the shell's capabilities which you can
-explore after you have begun to become acquainted with the shell.
-Later sections introduce features which are useful, but not necessary
-for all users of the shell.
-.PP
-Additional information includes an appendix listing special characters of the shell
-and a glossary of terms and commands introduced in this manual.
-.AE
-.SH
-.if n .ND
-Introduction
-.PP
-A
-.I shell
-is a command language interpreter.
-.I Csh
-is the name of one particular command interpreter on
-\s-2UNIX\s0.
-The primary purpose of
-.I csh
-is to translate command lines typed at a terminal into
-system actions, such as invocation of other programs.
-.I Csh
-is a user program just like any you might write.
-Hopefully,
-.I csh
-will be a very useful program for you
-in interacting with the \s-2UNIX\s0 system.
-.PP
-In addition to this document, you will want to refer to a copy
-of the \s-2UNIX\s0 User Reference Manual.
-The
-.I csh
-documentation in section 1 of the manual provides a full description of all
-features of the shell and is the definitive reference for questions
-about the shell.
-.PP
-Many words in this document are shown in
-.I italics.
-These are important words;
-names of commands, and words which have special meaning in discussing
-the shell and \s-2UNIX\s0.
-Many of the words are defined in a glossary at the end of this document.
-If you don't know what is meant by a word, you should look
-for it in the glossary.
-.SH
-Acknowledgements
-.PP
-Numerous people have provided good input about previous versions
-of
-.I csh
-and aided in its debugging and in the debugging of its documentation.
-I would especially like to thank Michael Ubell
-who made the crucial observation that history commands could be
-done well over the word structure of input text, and implemented
-a prototype history mechanism in an older version of the shell.
-Eric Allman has also provided a large number of useful comments on the
-shell, helping to unify those concepts which are present and to identify
-and eliminate useless and marginally useful features.
-Mike O'Brien suggested the pathname hashing
-mechanism which speeds command execution.
-Jim Kulp added the job control and directory stack primitives and
-added their documentation to this introduction.
-.br
-.bp
-.NH
-Terminal usage of the shell
-.NH 2
-The basic notion of commands
-.PP
-A
-.I shell
-in
-\s-2UNIX\s0
-acts mostly as a medium through which other
-.I programs
-are invoked.
-While it has a set of
-.I builtin
-functions which it performs directly,
-most commands cause execution of programs that are, in fact,
-external to the shell.
-The shell is thus distinguished from the command interpreters of other
-systems both by the fact that it is just a user program, and by the fact
-that it is used almost exclusively as a mechanism for invoking other programs.
-.PP
-.I Commands
-in the \s-2UNIX\s0 system consist of a list of strings or
-.I words
-interpreted as a
-.I "command name"
-followed by
-.I arguments.
-Thus the command
-.DS
-mail bill
-.DE
-consists of two words.
-The first word
-.I mail
-names the command to be executed, in this case the
-mail program which sends messages to other users.
-The shell uses the name of the command in attempting to execute it for you.
-It will look in a number of
-.I directories
-for a file with the name
-.I mail
-which is expected to contain the mail program.
-.PP
-The rest of the words of the command are given as
-.I arguments
-to the command itself when it is executed.
-In this case we specified also the argument
-.I bill
-which is interpreted by the
-.I mail
-program to be the name of a user to whom mail is to be sent.
-In normal terminal usage we might use the
-.I mail
-command as follows.
-.DS
-% mail bill
-I have a question about the csh documentation.
-My document seems to be missing page 5.
-Does a page five exist?
- Bill
-EOT
-%
-.DE
-.PP
-Here we typed a message to send to
-.I bill
-and ended this message with a ^D which sent an end-of-file to
-the mail program.
-(Here and throughout this document, the notation ``^\fIx\fR''
-is to be read ``control-\fIx\fR'' and represents the striking of the \fIx\fR
-key while the control key is held down.)
-The mail program
-then echoed the characters `EOT' and transmitted our message.
-The characters `% ' were printed before and after the mail command
-by the shell to indicate that input was needed.
-.PP
-After typing the `% ' prompt the shell was reading command input from
-our terminal.
-We typed a complete command `mail bill'.
-The shell then executed the
-.I mail
-program with argument
-.I bill
-and went dormant waiting for it to complete.
-The mail program then read input from our terminal until we signalled
-an end-of-file via typing a ^D after which the shell noticed
-that mail had completed
-and signaled us that it was ready to read from the terminal again by
-printing another `% ' prompt.
-.PP
-This is the essential pattern of all interaction with \s-2UNIX\s0
-through the shell.
-A complete command is typed at the terminal, the shell executes
-the command and when this execution completes, it prompts for a new command.
-If you run the editor for an hour, the shell will patiently wait for
-you to finish editing and obediently prompt you again whenever you finish
-editing.
-.PP
-An example of a useful command you can execute now is the
-.I tset
-command, which sets the default
-.I erase
-and
-.I kill
-characters on your terminal \- the erase character erases the last
-character you typed and the kill character erases the entire line you
-have entered so far.
-By default, the erase character is the delete key (equivalent to `^?')
-and the kill character is `^U'. Some people prefer to make the erase character
-the backspace key (equivalent to `^H').
-You can make this be true by typing
-.DS
-tset \-e
-.DE
-which tells the program
-.I tset
-to set the erase character to tset's default setting for this character
-(a backspace).
-.NH 2
-Flag arguments
-.PP
-A useful notion in \s-2UNIX\s0 is that of a
-.I flag
-argument.
-While many arguments to commands specify file names or user names,
-some arguments rather specify an optional capability of the command
-which you wish to invoke.
-By convention, such arguments begin with the character `\-' (hyphen).
-Thus the command
-.DS
-ls
-.DE
-will produce a list of the files in the current
-.I "working directory" .
-The option
-.I \-s
-is the size option, and
-.DS
-ls \-s
-.DE
-causes
-.I ls
-to also give, for each file the size of the file in blocks of 512
-characters.
-The manual section for each command in the \s-2UNIX\s0 reference manual
-gives the available options for each command.
-The
-.I ls
-command has a large number of useful and interesting options.
-Most other commands have either no options or only one or two options.
-It is hard to remember options of commands which are not used very
-frequently, so most \s-2UNIX\s0 utilities perform only one or two functions
-rather than having a large number of hard to remember options.
-.NH 2
-Output to files
-.PP
-Commands that normally read input or write output on the terminal
-can also be executed with this input and/or output done to
-a file.
-.PP
-Thus suppose we wish to save the current date in a file called `now'.
-The command
-.DS
-date
-.DE
-will print the current date on our terminal.
-This is because our terminal is the default
-.I "standard output"
-for the date command and the date command prints the date on its
-standard output.
-The shell lets us
-.I redirect
-the
-.I "standard output"
-of a command through a
-notation using the
-.I metacharacter
-`>' and the name of the file where output is to be placed.
-Thus the command
-.DS
-date > now
-.DE
-runs the
-.I date
-command such that its standard output is
-the file `now' rather than the terminal.
-Thus this command places the current date and time into the file `now'.
-It is important to know that the
-.I date
-command was unaware that its output was going to a file rather than
-to the terminal.
-The shell performed this
-.I redirection
-before the command began executing.
-.PP
-One other thing to note here is that the file `now'
-need not have existed before the
-.I date
-command was executed; the shell would have created the file if it did
-not exist.
-And if the file did exist?
-If it had existed previously these previous contents would have been discarded!
-A shell option
-.I noclobber
-exists to prevent this from happening accidentally;
-it is discussed in section 2.2.
-.PP
-The system normally keeps files which you create with `>' and all other files.
-Thus the default is for files to be permanent. If you wish to create a file
-which will be removed automatically, you can begin its name with a `#'
-character, this `scratch' character denotes the fact that the file will
-be a scratch file.*
-.FS
-*Note that if your erase character is a `#', you will have to precede the
-`#' with a `\e'. The fact that the `#' character is the old (pre-\s-2CRT\s0)
-standard erase character means that it seldom appears in a file name, and
-allows this convention to be used for scratch files. If you are using a
-\s-2CRT\s0, your erase character should be a ^H, as we demonstrated
-in section 1.1 how this could be set up.
-.FE
-The system will remove such files after a couple of days,
-or sooner if file space becomes very tight.
-Thus, in running the
-.I date
-command above, we don't really want to save the output forever, so we
-would more likely do
-.DS
-date > #now
-.DE
-.NH 2
-Metacharacters in the shell
-.PP
-The shell has a large number of
-special characters (like `>')
-which indicate special functions.
-We say that these notations have
-.I syntactic
-and
-.I semantic
-meaning to the shell.
-In general, most characters which are neither letters nor digits
-have special meaning to the shell.
-We shall shortly learn a means of
-.I quotation
-which allows us to use
-.I metacharacters
-without the shell treating them in any special way.
-.PP
-Metacharacters normally have effect only when the shell is reading
-our input.
-We need not worry about placing shell metacharacters in a letter
-we are sending via
-.I mail,
-or when we are typing in text or data to some other program.
-Note that the shell is only reading input when it has prompted with
-`% ' (although we can type our input even before it prompts).
-.NH 2
-Input from files; pipelines
-.PP
-We learned above how to
-.I redirect
-the
-.I "standard output"
-of a command
-to a file.
-It is also possible to redirect the
-.I "standard input"
-of a command from a file.
-This is not often necessary since most commands will read from
-a file whose name is given as an argument.
-We can give the command
-.DS
-sort < data
-.DE
-to run the
-.I sort
-command with standard input, where the command normally
-reads its input, from the file
-`data'.
-We would more likely say
-.DS
-sort data
-.DE
-letting the
-.I sort
-command open the file
-`data'
-for input itself since this is less to type.
-.PP
-We should note that if we just typed
-.DS
-sort
-.DE
-then the sort program would sort lines from its
-.I "standard input."
-Since we did not
-.I redirect
-the standard input, it would sort lines as we typed them on the terminal
-until we typed a ^D to indicate an end-of-file.
-.PP
-A most useful capability is the ability to combine the standard output
-of one command with the standard input of another, i.e. to run the
-commands in a sequence known as a
-.I pipeline.
-For instance the command
-.DS
-ls \-s
-.DE
-normally produces a list of the files in our directory with the size
-of each in blocks of 512 characters.
-If we are interested in learning which of our files is largest we
-may wish to have this sorted by size rather than by name, which is
-the default way in which
-.I ls
-sorts.
-We could look at the many options of
-.I ls
-to see if there was an option to do this but would eventually discover
-that there is not.
-Instead we can use a couple of simple options of the
-.I sort
-command, combining it with
-.I ls
-to get what we want.
-.PP
-The
-.I \-n
-option of sort specifies a numeric sort rather than an alphabetic sort.
-Thus
-.DS
-ls \-s | sort \-n
-.DE
-specifies that the output of the
-.I ls
-command run with the option
-.I \-s
-is to be
-.I piped
-to the command
-.I sort
-run with the numeric sort option.
-This would give us a sorted list of our files by size, but with the
-smallest first.
-We could then use the
-.I \-r
-reverse sort option and the
-.I head
-command in combination with the previous command doing
-.DS
-ls \-s | sort \-n \-r | head \-5
-.DE
-Here we have taken a list of our files sorted alphabetically,
-each with the size in blocks.
-We have run this to the standard input of the
-.I sort
-command asking it to sort numerically in reverse order (largest first).
-This output has then been run into the command
-.I head
-which gives us the first few lines.
-In this case we have asked
-.I head
-for the first 5 lines.
-Thus this command gives us the names and sizes of our 5 largest files.
-.PP
-The notation introduced above is called the
-.I pipe
-mechanism.
-Commands separated by `\||\|' characters are connected together by the
-shell and the standard output of each is run into the standard input of the
-next.
-The leftmost command in a pipeline will normally take its standard
-input from the terminal and the rightmost will place its standard
-output on the terminal.
-Other examples of pipelines will be given later when we discuss the
-history mechanism;
-one important use of pipes which is illustrated there is in the
-routing of information to the line printer.
-.NH 2
-Filenames
-.PP
-Many commands to be executed will need the names of files as arguments.
-\s-2UNIX\s0
-.I pathnames
-consist of a number of
-.I components
-separated by `/'.
-Each component except the last names a directory in which the next
-component resides, in effect specifying the
-.I path
-of directories to follow to reach the file.
-Thus the pathname
-.DS
-/etc/motd
-.DE
-specifies a file in the directory
-`etc'
-which is a subdirectory of the
-.I root
-directory `/'.
-Within this directory the file named is `motd' which stands
-for `message of the day'.
-A
-.I pathname
-that begins with a slash is said to be an
-.I absolute
-pathname since it is specified from the absolute top of the entire
-directory hierarchy of the system (the
-.I root ).
-.I Pathnames
-which do not begin with `/' are interpreted as starting in the current
-.I "working directory" ,
-which is, by default, your
-.I home
-directory and can be changed dynamically by the
-.I cd
-change directory command.
-Such pathnames are said to be
-.I relative
-to the working directory since they are found by starting
-in the working directory and descending to lower levels of directories
-for each
-.I component
-of the pathname. If the pathname contains no slashes at all then the
-file is contained in the working directory itself and the pathname is merely
-the name of the file in this directory.
-Absolute pathnames have no relation
-to the working directory.
-.PP
-Most filenames consist of a number of alphanumeric characters and
-`.'s (periods).
-In fact, all printing characters except `/' (slash) may appear in filenames.
-It is inconvenient to have most non-alphabetic characters in filenames
-because many of these have special meaning to the shell.
-The character `.' (period) is not a shell-metacharacter and is often used
-to separate the
-.I extension
-of a file name from the base of the name.
-Thus
-.DS
-prog.c prog.o prog.errs prog.output
-.DE
-are four related files.
-They share a
-.I base
-portion of a name
-(a base portion being that part of the name that is left when a trailing
-`.' and following characters which are not `.' are stripped off).
-The file
-`prog.c'
-might be the source for a C program,
-the file `prog.o' the corresponding object file,
-the file
-`prog.errs' the errors resulting from a compilation of the program
-and the file
-`prog.output' the output of a run of the program.
-.PP
-If we wished to refer to all four of these files in a command, we could
-use the notation
-.DS
-prog.*
-.DE
-This expression is expanded by the shell, before the command to which it is
-an argument is executed, into a list of names which begin with `prog.'.
-The character `*' here matches any sequence (including the empty sequence)
-of characters in a file name.
-The names which match are alphabetically sorted and placed in the
-.I "argument list"
-of the command.
-Thus the command
-.DS
-echo prog.*
-.DE
-will echo the names
-.DS
-prog.c prog.errs prog.o prog.output
-.DE
-Note that the names are in sorted order here, and a different
-order than we listed them above.
-The
-.I echo
-command receives four words as arguments, even though we only typed
-one word as an argument directly.
-The four words were generated by
-.I "filename expansion"
-of the one input word.
-.PP
-Other notations for
-.I "filename expansion"
-are also available.
-The character `?' matches any single character in a filename.
-Thus
-.DS
-echo ? \|?? \|???
-.DE
-will echo a line of filenames; first those with one character names,
-then those with two character names, and finally those with three
-character names.
-The names of each length will be independently sorted.
-.PP
-Another mechanism consists of a sequence of characters between `[' and `]'.
-This metasequence matches any single character from the enclosed set.
-Thus
-.DS
-prog.[co]
-.DE
-will match
-.DS
-prog.c prog.o
-.DE
-in the example above.
-We can also place two characters around a `\-' in this notation to denote
-a range.
-Thus
-.DS
-chap.[1\-5]
-.DE
-might match files
-.DS
-chap.1 chap.2 chap.3 chap.4 chap.5
-.DE
-if they existed.
-This is shorthand for
-.DS
-chap.[12345]
-.DE
-and otherwise equivalent.
-.PP
-An important point to note is that if a list of argument words to
-a command (an
-.I "argument list)"
-contains filename expansion syntax, and if this filename expansion syntax
-fails to match any existing file names, then the shell considers this
-to be an error and prints a diagnostic
-.DS
-No match.
-.DE
-and does not execute the command.
-.PP
-Another very important point is that files with the character `.' at the
-beginning are treated specially.
-Neither `*' or `?' or the `[' `]' mechanism will match it.
-This prevents accidental matching of the filenames `.' and `..'
-in the working directory which have special meaning to the system,
-as well as other files such as
-.I \&.cshrc
-which are not normally
-visible.
-We will discuss the special role of the file
-.I \&.cshrc
-later.
-.PP
-Another filename expansion mechanism gives access to the pathname of
-the
-.I home
-directory of other users.
-This notation consists of the character `~' (tilde) followed by another user's
-login name.
-For instance the word `~bill' would map to the pathname `/usr/bill'
-if the home directory for `bill' was `/usr/bill'.
-Since, on large systems, users may have login directories scattered over
-many different disk volumes with different prefix directory names,
-this notation provides a convenient way of accessing the files
-of other users.
-.PP
-A special case of this notation consists of a `~' alone, e.g. `~/mbox'.
-This notation is expanded by the shell into the file `mbox' in your
-.I home
-directory, i.e. into `/usr/bill/mbox' for me on Ernie Co-vax, the UCB
-Computer Science Department VAX machine, where this document was prepared.
-This can be very useful if you have used
-.I cd
-to change to another directory and have found a file you wish to
-copy using
-.I cp.
-If I give the command
-.DS
-cp thatfile ~
-.DE
-the shell will expand this command to
-.DS
-cp thatfile /usr/bill
-.DE
-since my home directory is /usr/bill.
-.PP
-There also exists a mechanism using the characters `{' and `}' for
-abbreviating a set of words which have common parts but cannot
-be abbreviated by the above mechanisms because they are not files,
-are the names of files which do not yet exist,
-are not thus conveniently described.
-This mechanism will be described much later,
-in section 4.2,
-as it is used less frequently.
-.NH 2
-Quotation
-.PP
-We have already seen a number of metacharacters used by the shell.
-These metacharacters pose a problem in that we cannot use them directly
-as parts of words.
-Thus the command
-.DS
-echo *
-.DE
-will not echo the character `*'.
-It will either echo a sorted list of filenames in the
-current
-.I "working directory,"
-or print the message `No match' if there are
-no files in the working directory.
-.PP
-The recommended mechanism for placing characters which are neither numbers,
-digits, `/', `.' or `\-' in an argument word to a command is to enclose
-it with single quotation characters `\'', i.e.
-.DS
-echo \'*\'
-.DE
-There is one special character `!' which is used by the
-.I history
-mechanism of the shell and which cannot be
-.I escaped
-by placing it within `\'' characters.
-It and the character `\'' itself can be preceded by a single `\e'
-to prevent their special meaning.
-Thus
-.DS
-echo \e\'\e!
-.DE
-prints
-.DS
-\'!
-.DE
-These two mechanisms suffice to place any printing character into a word
-which is an argument to a shell command. They can be combined, as in
-.DS
-echo \e\'\'*\'
-.DE
-which prints
-.DS
-\'*
-.DE
-since the first `\e' escaped the first `\'' and the `*' was enclosed
-between `\'' characters.
-.NH 2
-Terminating commands
-.PP
-When you are executing a command and the shell is
-waiting for it to complete there are several ways
-to force it to stop.
-For instance if you type the command
-.DS
-cat /etc/passwd
-.DE
-the system will print a copy of a list of all users of the system
-on your terminal.
-This is likely to continue for several minutes unless you stop it.
-You can send an
-\s-2INTERRUPT\s0
-.I signal
-to the
-.I cat
-command by typing ^C on your terminal.*
-.FS
-*On some older Unix systems the \s-2DEL\s0 or \s-2RUBOUT\s0 key
-has the same effect. "stty all" will tell you the INTR key value.
-.FE
-Since
-.I cat
-does not take any precautions to avoid or otherwise handle this signal
-the
-\s-2INTERRUPT\s0
-will cause it to terminate.
-The shell notices that
-.I cat
-has terminated and prompts you again with `% '.
-If you hit \s-2INTERRUPT\s0 again, the shell will just
-repeat its prompt since it handles \s-2INTERRUPT\s0 signals
-and chooses to continue to execute commands rather than terminating
-like
-.I cat
-did, which would have the effect of logging you out.
-.PP
-Another way in which many programs terminate is when they get an end-of-file
-from their standard input.
-Thus the
-.I mail
-program in the first example above was terminated when we typed a ^D
-which generates an end-of-file from the standard input.
-The shell also terminates when it gets an end-of-file printing `logout';
-\s-2UNIX\s0 then logs you off the system.
-Since this means that typing too many ^D's can accidentally log us off,
-the shell has a mechanism for preventing this.
-This
-.I ignoreeof
-option will be discussed in section 2.2.
-.PP
-If a command has its standard input redirected from a file, then it will
-normally terminate when it reaches the end of this file.
-Thus if we execute
-.DS
-mail bill < prepared.text
-.DE
-the mail command will terminate without our typing a ^D.
-This is because it read to the end-of-file of our file
-`prepared.text' in which we placed a message for `bill' with an editor program.
-We could also have done
-.DS
-cat prepared.text \||\| mail bill
-.DE
-since the
-.I cat
-command would then have written the text through the pipe to the
-standard input of the mail command.
-When the
-.I cat
-command completed it would have terminated,
-closing down the pipeline
-and the
-.I mail
-command would have received an end-of-file from it and terminated.
-Using a pipe here is more complicated than redirecting input
-so we would more likely use the first form.
-These commands could also have been stopped by sending an \s-2INTERRUPT\s0.
-.PP
-Another possibility for stopping a command is to suspend its execution
-temporarily, with the possibility of continuing execution later. This is
-done by sending a \s-2STOP\s0 signal via typing a ^Z.
-This signal causes all commands running on the terminal
-(usually one but more if a pipeline is executing) to become suspended.
-The shell notices that the command(s) have been suspended, types
-`Stopped' and then prompts for a new command.
-The previously executing command has been suspended, but otherwise
-unaffected by the \s-2STOP\s0 signal. Any other commands can be executed
-while the original command remains suspended. The suspended command can
-be continued using the
-.I fg
-command with no arguments. The shell will then retype the command
-to remind you which command is being continued, and cause the command
-to resume execution. Unless any input files in use by the suspended
-command have been changed in the meantime, the suspension has no effect
-whatsoever on the execution of the command. This feature can be very useful
-during editing, when you need to look at another file before continuing.
-An
-example of command suspension follows.
-.DS
-% mail harold
-Someone just copied a big file into my directory and its name is
-^Z
-Stopped
-% ls
-funnyfile
-prog.c
-prog.o
-% jobs
-.ta 1.75i
-[1] + Stopped mail harold
-% fg
-mail harold
-funnyfile. Do you know who did it?
-EOT
-%
-.so tabs
-.DE
-In this example someone was sending a message to Harold and forgot the
-name of the file he wanted to mention. The mail command was suspended
-by typing ^Z. When the shell noticed that the mail program was
-suspended, it typed `Stopped' and prompted for a new command. Then the
-.I ls
-command was typed to find out the name of the file. The
-.I jobs
-command was run to find out which command was suspended.
-At this time the
-.I fg
-command was typed to continue execution of the mail program. Input
-to the mail program was then continued and ended with a ^D
-which indicated the end of the message at which time the mail
-program typed EOT. The
-.I jobs
-command will show which commands are suspended.
-The ^Z should only be typed at the beginning of a line since
-everything typed on the current line is discarded when a signal is sent
-from the keyboard. This also happens on \s-2INTERRUPT\s0, and \s-2QUIT\s0
-signals. More information on
-suspending jobs and controlling them is given in
-section 2.6.
-.PP
-If you write or run programs which are not fully debugged then it may
-be necessary to stop them somewhat ungracefully.
-This can be done by sending them a \s-2QUIT\s0
-signal, sent by typing a ^\e.
-This will usually provoke the shell to produce a message like:
-.DS
-Quit (Core dumped)
-.DE
-indicating that a file
-`core' has been created containing information about the running program's
-state when it terminated due to the \s-2QUIT\s0 signal.
-You can examine this file yourself, or forward information to the
-maintainer of the program telling him/her where the
-.I "core file"
-is.
-.PP
-If you run background commands (as explained in section 2.6) then these
-commands will ignore \s-2INTERRUPT\s0 and \s-2QUIT\s0 signals at the
-terminal. To stop them you must use the
-.I kill
-command. See section 2.6 for an example.
-.PP
-If you want to examine the output of a command without having it move
-off the screen as the output of the
-.DS
-cat /etc/passwd
-.DE
-command will, you can use the command
-.DS
-more /etc/passwd
-.DE
-The
-.I more
-program pauses after each complete screenful and types `\-\-More\-\-'
-at which point you can hit a space to get another screenful, a return
-to get another line, a `?' to get some help on other commands, or a `q' to end the
-.I more
-program. You can also use more as a filter, i.e.
-.DS
-cat /etc/passwd | more
-.DE
-works just like the more simple more command above.
-.PP
-For stopping output of commands not involving
-.I more
-you can use the
-^S key to stop the typeout. The typeout will resume when you
-hit ^Q or any other key, but ^Q is normally used because
-it only restarts the output and does not become input to the program
-which is running. This works well on low-speed terminals, but at 9600
-baud it is hard to type ^S and ^Q fast enough to paginate
-the output nicely, and a program like
-.I more
-is usually used.
-.PP
-An additional possibility is to use the ^O flush output
-character; when this character is typed, all output from the current
-command is thrown away (quickly) until the next input read occurs
-or until the next shell prompt. This can be used to allow a command
-to complete without having to suffer through the output on a slow
-terminal; ^O is a toggle, so flushing can be turned off by
-typing ^O again while output is being flushed.
-.NH 2
-What now?
-.PP
-We have so far seen a number of mechanisms of the shell and learned a lot
-about the way in which it operates.
-The remaining sections will go yet further into the internals of the
-shell, but you will surely want to try using the
-shell before you go any further.
-To try it you can log in to \s-2UNIX\s0 and type the following
-command to the system:
-.DS
-chsh myname /bin/csh
-.DE
-Here `myname' should be replaced by the name you typed to
-the system prompt of `login:' to get onto the system.
-Thus I would use `chsh bill /bin/csh'.
-.B
-You only have to do this once; it takes effect at next login.
-.R
-You are now ready to try using
-.I csh.
-.PP
-Before you do the `chsh' command, the shell you are using when
-you log into the system is `/bin/sh'.
-In fact, much of the above discussion is applicable to `/bin/sh'.
-The next section will introduce many features particular to
-.I csh
-so you should change your shell to
-.I csh
-before you begin reading it.
-.bp
OpenPOWER on IntegriCloud