Linux 版 (精华区)
发信人: netiscpu (说不如做), 信区: Linux
标 题: [B] Red Hat Linux Unleashed (11)
发信站: 紫 丁 香 (Sat Jul 25 03:09:55 1998), 转信
Using pdksh
_________________________________________________________________
o The Public Domain Korn Shell (pdksh)
# Command-Line Completion
# Wildcards
# Command History
# Aliases
# Input Redirection
# Output Redirection
# Pipelines
o Shell Prompts
o Job Control
o Key Bindings
o Customizing Your pdksh
o pdksh Commands
o pdksh Variables
o Summary
_________________________________________________________________
11
Using pdksh
In the last chapter, you saw the Bourne Again Shell (bash) in some
detail. Not everyone wants to use the bash shell, so several other
shells are included with most Linux systems. One of them is pdksh, a
variation on the Korn Shell.
In this chapter, we look at the pdksh shell and how it can be
efficiently used. After reading this chapter, you will be familiar
with the following topics:
* Command-line completion and wildcards
* Command history and aliases
* Input and output redirection
* Pipelines
* How to change your shell prompt
* Job control
* Key bindings
We will also look at how you can customize your copy of pdksh, as well
as several of the important commands and variables used by the shell.
The Public Domain Korn Shell (pdksh)
The Korn shell, written by David Korn, was the third mainstream shell
written for UNIX. Because of this, it incorporated many of the
features of the Bourne and C shells (which were the first two shells).
Because of the Korn shell's popularity among UNIX users, a version was
developed for Linux called the Public Domain Korn Shell, or pdksh.
The current version of the Public Domain Korn Shell does not support
all of the features that exist in the commercial version of the Korn
shell. It does support most of the main features, however, and adds a
few new features of its own.
Command-Line Completion
Often, when you are entering commands at the command line, the
complete text of the command is not necessary in order for pdksh to be
able to determine what you want to do. Command-line completion enables
you to type in a partial command, and then by entering a key sequence,
tell pdksh to try to finish the command for you.
pdksh does not default to allowing the user to perform command-line
completion. You must enter a command to tell pdksh that you want to be
able to use command-line completion. In order to enable command-line
completion, enter one of the following commands:
set -o emacs
set -o vi
This causes pdksh to accept command editing that is similar to emacs
or vi. Choose the editor that you are most familiar with, and use the
basic editor commands for command-line editing.
______________________________________________________________
NOTE: Most people find the emacs editing mode more user-friendly
than the vi editing mode.
When using vi command-line editing, you must be in command mode
when you enter any of the editing commands. You can enter command
mode by pressing the Esc key. When command mode has been entered,
you cannot type any characters onto the command line until you
enter edit mode. There are many ways of doing this, but the usual
way is by pressing the i (insert) key.
______________________________________________________________
After the command-line completion function has been enabled, you can
perform command-line completion by pressing the Esc key twice (when
using emacs command-line editing), or by pressing \ (when using vi
command-line editing). For example, if your current directory contains
the files
News/ bin/ games/ mail/ sample.text test/
and you want to edit the file sample.text using the vi text editor,
you could enter the following command:
vi sample.text
After the s is typed, the only file that you could be referring to is
sample.text, because it is the only file in the current directory that
begins with the letter s. To get pdksh to finish the command when you
are using emacs-style command editing, you must press the Esc key
twice after you type the letter s:
vi s<escape><escape>
To get pdksh to finish the command when you are using vi command
editing, you must press the \ key after you type the letter s:
vi s\
Either of these commands causes pdksh to finish the line for you and
display the result on the screen. The command does not execute until
you press the Enter key. This is done to give you a chance to confirm
that the command pdksh came up with is the command that you really
intended.
If the sample.text file is not the only file in the directory that
begins with the letter s, pdksh completes the command as far as it can
and then beeps, indicating that it needs more information to complete
the command.
______________________________________________________________
NOTE: The keyboard equivalent of pressing the Esc key is Ctrl-[,
usually written as ^[. The caret (^) is the abbreviation for the
Ctrl key. Pressing Esc twice using the Ctrl-[ sequence would be
written as ^[^[. You might see this convention in books or man
pages.
______________________________________________________________
Wildcards
The pdksh shell makes typing commands easier by enabling the user to
use wildcards. pdksh supports the same wildcards that bash does:
* matches any character and any number of characters.
? matches any single character.
[...] matches any single character contained within the brackets.
The * wildcard can be used in a way that is similar to command-line
completion. For example, if the current directory contains the files
News/ bin/ games/ mail/ sample.text test/
and you want to edit the sample.text file using the vi text editor,
you can perform this task by using the following wildcard:
vi s*
The * matches any character (and any number of characters), so pdksh
replaces s* with sample.text (the only file in the directory that
matches the wildcard pattern).
This works reliably if there is only one file in the directory that
starts with the letter s. If more than one file starts with the same
letter, the shell tries to replace s* with the list of filenames that
match the wildcard pattern, and runs vi on the first file in this
list. After you quit editing the first file, the second file in the
list is loaded into vi, and so on for each file that matched the
wildcard pattern. If you intended to edit more than one file, this
would be fine, but if you only wanted to edit the sample.text file,
this command would not work the way you expected it to.
A more practical situation in which to use the * wildcard is when you
want to execute the same command on multiple files that have similar
filenames. For example, assume that the current directory contains the
following files:
News/ bin/ games/ mail/ sample.text temp1.out
temp2.out temp3.out test/
If you want to delete all of the files with an .out extension, you can
do it by entering the following command:
rm *.out
In this case, pdksh replaces *.out with the names of all of the files
in the directory that match the wildcard pattern. After pdksh performs
this substitution, the following command is processed:
rm temp1.out temp2.out temp3.out
The rm command is invoked with the arguments of temp1.out, temp2.out,
and temp3.out.
The ? wildcard functions in a similar way to the * wildcard, except
that the ? wildcard matches only a single character. Assuming the same
directory contents as in the previous example, the ? wildcard can be
used to delete all of the files with the .out extension by entering
the following command:
rm temp?.out
The [...] wildcard enables you to specify characters or ranges of
characters to match. To print all of the files in the previous example
that have the .doc extension, enter one of the following two commands:
rm temp[123].out
rm temp[1-3].out
Command History
The pdksh shell supports a command history in much the same way as
bash. The pdksh shell keeps track of the last HISTSIZE commands that
have been entered (HISTSIZE is a user-definable pdksh variable).
pdksh stores the text of the last HISTSIZE commands in a history list.
When you log in, the history list is initialized from a history file.
The filename of the history file can be set using the HISTFILE pdksh
variable. The default filename for the history file is .ksh_history.
This file is located in your home directory. Notice that the file
begins with a ., meaning that the file is hidden, and it appears in a
directory listing only if you use the -a or -A option of the ls
command.
The shell provides several ways of accessing the history list. The
simplest way is to scroll through the commands that have been
previously entered. In pdksh, this is done differently depending on
whether you are using emacs or vi command editing.
If you are using emacs command editing, you scroll up through the
history list by pressing Ctrl-p, and you scroll down through the list
by pressing Ctrl-n. If you are using vi command-line editing, you
scroll up through the history list by pressing either the k or - key,
and you scroll down through the history list by pressing j or +.
______________________________________________________________
NOTE: When using vi command editing, you must be in command mode
for the key commands to work. You enter command mode by pressing
the Esc key.
______________________________________________________________
The command that is on the command line can be edited. The pdksh shell
supports a complex set of editing capabilities (most of which are
beyond the scope of this book). You can use the left and right arrow
keys to move along the command line. You can insert text at any point
and delete text from the command line by using the backspace or delete
keys. Most users should find these simple editing commands sufficient;
for those who do not, there are many other more complicated ways of
editing the command line.
______________________________________________________________
NOTE: The complex set of editing commands that pdksh offers is
similar to the commands contained in the emacs or vi text editor
(you can set either emacs or vi emulation by using the set -o emacs
or set -o vi commands). If you are familiar with emacs (or vi),
these commands will be familiar to you.
______________________________________________________________
Another method of using the history file is to display and edit it
using fc (fix command), the built-in pdksh shell command. If you read
Chapter 10, "Using bash," you may remember that bash supported another
command called history, which allowed you to view and modify the
history file. The history command was left out of the pdksh shell
because all of its functionality could be provided by the fc command.
______________________________________________________________
NOTE: Even though the history command is not built into pdksh, the
command normally still works because it is usually set up as an
alias to the fc -l command. For example, the .kshrc file usually
contains a line such as alias history='fc -l', which provides
behavior almost identical to the history command that is built into
other shells.
______________________________________________________________
The fc command is used to edit the command history. It has a number of
options, as is illustrated in the following command syntax:
fc [-e ename] [-nlr] [first] [last]
All options given in braces are optional. The -e portion of the
command can be used to specify the text editor that is to be used for
editing the commands in the command history. The first and last
options are used to select a range of commands to take out of the
history list. First and last can refer either to the number of a
command in the history list, or to a string that fc tries to find in
the history list.
The -n option is used to suppress command numbers when listing the
history commands that matched the specified range. The -r option lists
the matched commands in reverse order. The -l command lists the
matched commands to the screen. In all cases except for the -l option,
the matching commands are loaded into a text editor.
The text editor used by fc is found by taking the value of ename if
the -e option was used. If this option was not used, fc uses the
editor specified by the variable FCEDIT. If this variable does not
exist, fc uses the value of the EDITOR variable. Finally, if none of
these variables exists, the editor chosen is vi.
If you enter the fc command with no arguments, it loads the last
command that was entered into the editor. Remember that when you exit
the editor, fc attempts to execute any commands that are in the
editor.
The easiest way to understand what the fc command does is to look at a
few examples:
fc loads the last command into the default editor.
fc -l lists the last 16 commands that were entered.
fc -l 5 10 lists the commands with history numbers between 5 and
10, inclusive.
fc 6 loads history command number 6 into the default editor.
fc mo loads into the default editor the most recent command that
starts with the string mo.
Aliases
Another way pdksh makes life easier for you is by supporting command
aliases. Command aliases are commands that you can specify and
execute. Alias commands are usually abbreviations of other commands.
You tell pdksh to execute a Linux command whenever it encounters the
alias. For example, if you have a file in your directory that holds a
list of things that you must do each day, and you typically edit the
file every morning to update it, you might find yourself entering the
following command on a regular basis:
vi things-to-do-today.txt
Because you are entering this command quite often, you might be
inclined to create an alias for it to save yourself some typing.
Instead of typing this command every time you want to edit the file,
you can create an alias called ttd that causes the longer command to
be executed.
To set up an alias such as this, you must use the pdksh alias command.
To create the ttd alias, you enter the following command at the pdksh
command prompt:
alias ttd='vi things-to-do-today.txt'
From the time that you enter the alias command until the time you exit
from pdksh, the ttd command causes the longer command to be executed.
If you decide after you enter an alias that you no longer want that
alias, you can use the pdksh unalias command to delete the alias:
unalias ttd
After you use the unalias command to remove an alias, the alias no
longer exists, and trying to execute it causes pdksh to report Command
not found.
The following are some aliases that you might want to define:
alias ll='ls -l'
alias log='logout'
alias ls='ls -F'
If you are a DOS user and you prefer to use DOS file commands, you may
also want to define the following aliases:
alias dir='ls'
alias copy='cp'
alias rename='mv'
alias md='mkdir'
alias rd='rmdir'
______________________________________________________________
NOTE: When defining aliases, there must not be spaces on either
side of the equal sign. The quotation marks are only necessary if
the command within them contains spaces or other special
characters.
______________________________________________________________
If you enter the alias command without any arguments, it prints all of
the aliases that are already defined to the screen. There is a way to
make sure that all of your alias commands get executed each time you
start pdksh. This is done by using an initialization file, which we
will discuss in the "Customizing pdksh" section, later in this
chapter.
Input Redirection
Input redirection is used to change the source of input for a command.
Typically, when a command is entered in pdksh, the command expects
some kind of input in order to do its job. Some of the simpler
commands must get all of the information that they need passed to them
on the command line. The rm command, for example, requires you to tell
it on the command line which files you want to delete; if you do not
specify any files it issues a prompt telling you to enter rm -h for
help.
Other commands require more elaborate input than a simple directory
name. The input for these commands is typically found in a file. For
example, the wc (word count) command counts the number of characters,
words, and lines in the input that was given to it. If you enter the
wc command with a filename as an argument, wc returns the number of
characters, words, and lines that are contained in that file. An
example of this is
wc test
11 2 1
Another way to pass the contents of the test file to wc as input is to
change (or redirect) the input of the wc command from the terminal to
the test file. This results in the same output. The < character is
used by pdksh to redirect the input to the current command from the
file following the character. So, redirecting wc's input from the
terminal to the test file is done by entering the following command:
wc < test
11 2 1
Input redirection is not used too often because most commands that
require input from a file have an option to specify a filename on the
command line. There are times, however, when you will come across a
program that does not accept a filename as an input parameter, and yet
the input that you want to give to the command exists in a file.
Whenever this situation occurs, you can use input redirection to get
around the problem.
Output Redirection
Output redirection is more commonly used than input redirection.
Output redirection enables you to redirect the output from a command
into a file, as opposed to having the output displayed on the screen.
There are many situations in which this capability can be very useful.
For example, if the output of a command is quite large and does not
fit on the screen, you might want to redirect it to a file so you can
later view it using a text editor. Output redirection is done in much
the same way as input redirection. Instead of using the < symbol, the
> symbol is used.
To redirect the output of an ls command into a file named
directory.out, the following command is used:
ls > directory.out
Pipelines
Pipelines are a way to string together a series of commands. This
means that the output from the first command in the pipeline is used
as the input to the second command. You can tell pdksh to create a
pipeline by typing two or more commands separated by the | character.
The following is an example of using a pdksh pipeline:
cat test.file | sort | uniq
This is a fairly common pipeline. Here, the contents of test.file (the
output from the cat command) are fed into the input of the sort
command. The sort command, without any options, sorts its input
alphabetically by the first field in the input. The sorted file is
then piped into the uniq command. The uniq command removes any
duplicate lines from the input. If test.file contains the lines
Sample dialog
Hello there
How are you today
Hello there
I am fine
the output from the pipeline is the following:
Hello there
How are you today
I am fine
Sample dialog
All of the lines in the file have been sorted by the first word in the
line, and one of the Hello there lines has been removed because of the
uniq command.
Shell Prompts
pdksh has three levels of user prompts. The first level is what the
user sees when the shell is waiting for a command to be typed. (This
is what you normally see when you are working with the shell.) The
default prompt is the $ character. If you do not like the dollar sign
as the prompt or prefer to customize the prompt to your own
requirements, you can do so by setting the value of the PS1 pdksh
variable.
To set a variable, give the name and equal sign, and the string you
want to set it to. Make sure you do not place any spaces on either
side of the equal sign, or the shell will not interpret your command
properly. For example, the line
PS1="! Tell me what to do"
sets the shell prompt to the string ! Tell me what to do. The pdksh
shell keeps track of how many commands have been entered since it was
started. This number is stored into the shell variable called !. When
you include the ! in the prompt, it displays the current command
number in the prompt. The previous prompt command causes the command
number followed by the string Tell me what to do to be displayed on
the command line each time pdksh is expecting you to enter a command.
The second level of prompt is displayed when pdksh is expecting more
input from you in order to complete a command. The default for the
second level prompt is >. If you want to change the second level
prompt, you can do so by setting the value of the PS2 pdksh variable,
as in the following example:
PS2=" I need more information"
This causes the string I need more information to be displayed on the
command line whenever pdksh needs something from you to complete a
command.
pdksh does not support the advanced prompt options that bash supports.
There is not a predefined set of escape codes that you can put in a
pdksh prompt variable to display such items as the time or current
working directory. You can, however, put other pdksh variables into a
prompt variable. For example, the following two prompts are valid:
PS1="(LOGNAME) "
PS1='($PW '
The first example causes your prompt to be equal to your UNIX user
name. The second example causes your prompt to be the current working
directory. The single quotes are needed here so that the value of the
PWD variable does not get assigned to the variable only the first time
it is executed. If you use double quotes, the PWD variable is
evaluated only when the command is first entered. (The prompt would
always be the directory name of the directory that you are in when you
enter the command.) The single quotes cause the value of the PS1
variable to be equal to the current value of the PWD variable. For
more information on using these quotes, see Chapter 13, "Shell
Pro-gramming."
Job Control
Job control is the capability to control the execution behavior of a
currently running process. Specifically, you can suspend a running
process and cause it to resume running at a later time. The pdksh
shell keeps track of all of the processes that it started, and you can
suspend a running process or restart a suspended one at any time
during the life of that process.
Pressing the Ctrl-Z key sequence suspends a running process. The bg
command restarts a suspended process in the background, and the fg
command restarts a process in the foreground.
These commands are most often used when a user wants to run a command
in the background but accidentally starts it in the foreground. When a
command is started in the foreground, it locks the shell from any
further user interaction until the command completes execution. This
is usually not a problem, because most commands only take a few
seconds to execute. If the command you are running is going to take a
long time, you typically start the command in the background so that
you can continue to use pdksh to enter other commands while it
completes running.
If you start a command in the foreground that is going to take a long
time, your shell may be tied up for several minutes. If you have done
this and want to continue executing the command in the background,
enter the following:
control-z
bg
This suspends the command and restarts it in the background. The
command continues to execute, and you have the control of pdksh.
Key Bindings
One useful feature that pdksh supports, which is lacking in the Bourne
Again Shell, is key bindings. This feature enables you to change the
behavior of key combinations for the purpose of command-line editing.
If, for example, you do not like the fact that you have to use the
emacs key sequence Ctrl-P to move up in the history buffer, you can
change the key sequence for that command to something else. The syntax
for doing the key binding is the following:
bind <key sequence> <command>
This feature effectively enables you to customize pdksh to have the
exact feel that you want. One of the most commonly used key bindings
is to bind the up, down, left, and right arrows to be used as they are
in bash (for scrolling up and down the history list, and for moving
left and right along the command line). This binding is typically
found in your .kshrc file, which is the startup file for the shell (it
is read whenever the shell starts).
The bind commands that are needed to create these bindings are as
follows:
bind '^[['=prefix-2
bind '^XA'=up-history
bind "^XB'=down-history
bind '^XC'=forward-char
bind '^XD'=backward-char
The following list gives some of the most useful editing commands that
you can use for binding keys, along with the default binding and a
description of each. You can get a listing of all of the editing
commands that pdksh supports by typing the bind command without any
arguments.
abort (^G) is used to abort another editing command. It is most
commonly used to stop a history list search.
backward-char (^B) moves the cursor backward one character. This
command is often bound to the left arrow key.
backward-word (^[b) moves the cursor backward to the beginning of
a word.
beginning-of-line (^A) moves the cursor to the beginning of the
command line.
complete (^[^[) tells pdksh to try to complete the current
command.
copy-last-arg (^[_) causes the last word of the previous command
to be inserted at the cursor position.
delete-char-backward (ERASE) deletes the character that is to the
left of the cursor.
delete-char-forward deletes the character to the right of the
cursor.
delete-word-backward (^[ERASE) deletes the characters to the left
of the cursor back to the first white space character that is
encountered.
delete-word-forward (^[ deletes the characters to the right of
the cursor up to the first character that occurs after a
whitespace character.
down-history (^N) moves down one line in the history list. This
command is often bound to the down arrow key.
end-of-line (^E) moves the cursor to the end of the current line.
forward-char (^F) moves the cursor forward one character. This
command is often bound to the right arrow key.
forward-word (^[F) moves the cursor forward to the end of a word.
kill-line (KILL) deletes the current line.
kill-to-eol (^K) deletes all of the characters to the right of
the cursor on the current line.
list (^[?) causes pdksh to list all of the possible command names
or filenames that can complete the word in which the cursor
is currently contained.
search-history (^R) searches the history list backward for the
first command that contains the inputted characters.
transpose-chars (^T) exchanges the two characters on either side
of the cursor. If the cursor is at the end of the command
line it switches the last two characters on the line.
up-history (^P) moves up one command in the history list. This
command is often bound to the up arrow key.
Customizing Your pdksh
Many ways of customizing pdksh have been described in this chapter.
Until now, though, the changes that you made only affected the current
pdksh session. As soon as you quit pdksh, all of the customizations
that you made are lost. There is a way of making the customizations
more per-manent.
This is done by storing all of your customizations in a pdksh
initialization file. Users can put commands into this file that they
want to be executed each and every time pdksh is started. Examples of
commands that are typically found in this file are aliases and
initializations of variables (such as the prompts).
In order to set up your customization file, you must tell pdksh where
to look for the initialization file. This is different than with bash.
The bash shell automatically knew where to look for its customization
file. To tell pdksh where to look for the customization file, you must
create a file in your home directory called .profile. This file is
read and all of the commands in the file are executed each time you
log into the system.
A sample of the commands that you should place in your .profile file
are as follows:
export ENV=$HOME/.kshrc
EDITOR=emacs
The first line in the .profile file sets the ENV variable. This is the
variable that pdksh looks at to find the initialization file that it
should use. If you plan to customize pdksh, you should tell pdksh to
look for a file in your home directory. The filename .kshrc is often
used as the pdksh initialization filename, but you can pick another
name if you want.
If you are not planning to customize pdksh, you can set the ENV
variable to be equal to the system default pdksh initialization file.
This file is in the /etc directory, and is called ksh.kshrc.
The second line in the .profile file sets the EDITOR variable. This is
used by the .kshrc initialization file to determine what type of
command-line editing commands to use for your session. If you prefer
to use vi command-line editing, you can set this variable to be equal
to vi.
Listing 11.1 shows most of what is contained in the system's default
ksh.kshrc file. If you want to add your own customizations to pdksh,
you should copy this file into your home directory and then add the
customizations that you want to your own copy of the file.
______________________________________________________________
NOTE: Instead of copying the file to your home directory, you can
create a new file in your home directory that calls the system
default file, and then add customizations afterward.
______________________________________________________________
Listing 11.1. Default ksh.kshrc file.
# NAME
# ksh.kshrc - global initialization for ksh
#
# DESCRIPTION:
# Each invocation of /bin/ksh processes the file pointed
# to by $ENV (usually $HOME/.kshrc).
# This file is intended as a global .kshrc file for the
# Korn shell. A user's $HOME/.kshrc file simply requires
# the line:
# . /etc/ksh.kshrc
# at or near the start to pick up the defaults in this
# file which can then be overridden as desired.
#
# SEE ALSO:
# $HOME/.kshrc
#
# RCSid:
# $Id: ksh.kshrc,v 1.6 93/09/29 08:57:50 sjg Exp $
#
# @(#)Copyright 1991 Simon J. Gerraty
#
# This file is provided in the hope that it will
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
case "$-" in
*i*) # we are interactive
# we may have su'ed so reset these
# NOTE: SCO-UNIX doesn't have whoami,
# install whoami.sh
HOSTNAME='hostname'
USER='whoami'
PROMPT="<$USER@$HOSTNAME:!>$ "
PPROMPT='<$USER@$HOSTNAME:$PWD:!>$ '
PS1=$PROMPT
# $TTY is the tty we logged in on,
# $tty is that which we are in now (might by pty)
tty='tty'
tty='basename $tty'
set -o $EDITOR
alias ls='ls -CF'
alias h='fc -l | more'
# the PD ksh is not 100% compatible
case "$KSH_VERSION" in
*PD*) # PD ksh
case "$TERM" in
xterm*)
# bind arrow keys
bind '^[['=prefix-2
bind '^XA'=up-history
bind '^XB'=down-history
bind '^XC'=forward-char
bind '^XD'=backward-char
;;
esac
;;
*) # real ksh ?
;;
esac
case "$TERM" in
sun*)
# these are not as neat as their csh equivalents
if [ "$tty" != console ]; then
# ilabel
ILS='\033]L'; ILE='\033\\'
# window title bar
WLS='\033]l'; WLE='\033\\'
fi
;;
xterm*)
ILS='\033]1;'; ILE='\007'
WLS='\033]2;xterm: '; WLE='\007'
;;
*) ;;
esac
# do we want window decorations?
if [ "$ILS" ]; then
ilabel () { print -n "${ILS}$*${ILE}"; }
label () { print -n "${WLS}$*${WLE}"; }
alias stripe='label "$USER@$HOST ($tty) - $PWD"'
alias istripe='ilabel "$USER@$HOST ($tty)"'
wftp () { ilabel "ftp $*"; "ftp" $*; eval istripe; }
wcd () { "cd" $*; eval stripe; }
wtelnet ()
{
"telnet" "$@"
eval istripe
eval stripe
}
wsu ()
{
"su" "$@"
eval istripe
eval stripe
}
alias su=wsu
alias cd=wcd
alias ftp=wftp
alias telnet=wtelnet
eval stripe
eval istripe
PS1=$PROMPT
fi
alias quit=exit
alias cls=clear
alias logout=exit
alias bye=exit
alias p='ps -l'
alias j=jobs
alias o='fg %-'
# add your favourite aliases here
;;
*) # non-interactive
;;
esac
# commands for both interactive and non-interactive shells
pdksh Commands
Here are some of the most useful built-in pdksh commands:
. reads and executes the contents of the file. (This will be
discussed in more detail in Chapter 13.)
alias is used to set aliases, command nicknames that can be
defined by the user.
bg (background command) forces a suspended process to continue to
execute in the background.
cd (change working directory) changes the current working
directory to the directory specified.
exit terminates the shell.
export causes the value of a variable to be made visible to all
subprocesses that belong to the current shell.
fc (fix command) used to edit the commands that are in the
current history list.
fg (foreground command) forces a suspended process to continue to
execute in the foreground.
kill is used to terminate another process.
pwd (print working directory) prints to the screen the directory
in which the user is currently working.
unalias is used to remove aliases that have previously been
defined using the alias command.
pdksh Variables
Some of the most useful pdksh variables are listed next, including the
variable name, a short description, and default value (if one exists).
EDITOR, FCEDIT The default editor for the fc bash command.
HISTFILE The name of the file that is used to store the command
history.
HISTSIZE The size of the history list.
HOME The HOME directory of the current user
OLDPWD The previous working directory (the one that was current
before the current directory was entered).
PATH The search path that bash uses when looking for executable
files.
PS1 The first level prompt that is displayed on the command line.
PS2 The second level prompt that is displayed when a command is
expecting more input.
PWD The current working directory.
SECONDS The number of seconds that have elapsed since the current
bash session was started.
Summary
We've looked at many of the features of the Public Domain Korn Shell
(pdksh). It is similar to the Bourne Again Shell in many aspects, but
it does add some new utilities.
In the next chapter, we look at tcsh, a version of the C shell that is
available with Linux. After you have seen the features and the way you
use the three shells, you should be able to decide which shell is best
for you to use on a regular basis. Of course, you can use any shell at
any time by simply typing its name.
--
Enjoy Linux!
-----It's FREE!-----
※ 修改:.netiscpu 于 Jul 25 03:45:51 修改本文.[FROM: mtlab.hit.edu.cn]
※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: mtlab.hit.edu.cn]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:616.955毫秒