- 论坛徽章:
- 0
|
Unix KornShell Quick Reference
--------------------------------------------------------------------------------
Contents
Command Language
I/O redirection and pipe
Shell variables
Pattern matching
Control characters
The environment
Most usual commands
Help
Directory listing
Creating a directory
Changing directory
Comparing files
Access to files
copying files and directories
deleting files & directory
moving files & directories
Visualizing files
linking files & directories
Compiling & Linking
Debugging a program
Archive library
Make
Job control
miscellaneous
History & Command line editing
Creating KORNshell scripts
The different shells
Special shell variables
special characters
Evaluating shell variables
The if statement
The logical operators
Math operators
Controlling execution
Debug mode
Examples
Example 1 : loops, cases ...
Example 2 : switches
Example 3
Example 4
Example 5
List of Usual commands
List of Administrator commands
--------------------------------------------------------------------------------
Command Language
I/O redirection and pipe
% command running in foreground (interactive)
% command >;file redirects stdout to file
% command 2>;err_file redirects stderr to err_file
% command >;file 2>;&1 redirects both stdout and stderr on file
% (command >; f1) 2>;f2 send stdout on f1, stderr on f2
% command >;>;file appends stdout to file
% command <file redirects stdin from file
% command << text Read standard input uo to line identical
to text
% command1 | command2 redirects stdout from command1 into stdin of
command2 via a pipe
Ex : du ~ | sort -nr | head
% command | tee f1 f2 ... The output of command is sent on
stdout and copied into f1, f2, ...
% command& running in background
% nohup command& running in background even after log out
% set -o monitor to have a message when a background job ends
stderr : to print on it in a script, use the option -u2 in command print
Shell variables
# Warning : no blank before of after the = sign
# Integers :
n=100 ; x=&n
integer t
typeset -r roues=4 # definition of a CONSTANT (read only)
typeset -i2 x # declares x as binary integer
typeset -i8 y # declares y as octal integer
typeset -i16 z # guess what ?
# Strings :
lettre="Q" ; mot="elephant"
phrase="Hello, word"
print "n=$n ; lettre=$lettre ; mot=$mot ; phrase=$phrase"
typeset -r nom="JMB" # string constant
# Arrays : one dimensional arrays of integers or strings
# automatically dimensionned to 1024
animal[0]="dog" ; animal[1]="horse" ; animal[3]="donkey"
set -A flower tulip gardenia " " rose
print ${animal}
print ${flower[@]}
print "cell#1 content : ${flower[1]}
Pattern matching
+------------------------+------------------------------------------------+
| Wild card | matches |
+------------------------+------------------------------------------------+
| ? | any single char |
| [char1char2... charN] | any single char from the specified list |
| [!char1char2... charN] | any single char other than one from the |
| | specified list |
| [char1-charN] | any char between char1 and charN inclusive |
| [!char1-charN] | any char other than between char1 and charN |
| | inclusive |
| * | any char or any group of char (including none) |
| ?(pat1|pat2...|patN) | zero or one of the specified patterns |
| @(pat1|pat2...|patN) | exactly one of the specified patterns |
| *(pat1|pat2...|patN) | zero, one or more of the specified patterns |
| +(pat1|pat2...|patN) | one or more of the specified patterns |
| !(pat1|pat2...|patN) | any pattern except one of the specif. patterns |
+------------------------+------------------------------------------------+
Tilde Expansion :
~ your home directory (ls ~)
~frenkiel home directory of another user
~+ absolute pathname of the working directory
~- previous directory (cd ~-) ( or cd -)
Control characters
< ctrl_c>; Cancel the currently running process (foreground)
< ctrl_z>; Suspend the currently running process
then : >; bg : to send it in background
or >; fg : continue in foreground
or >; kill -option : sends signals (such as TERMINATE)
ex >; kill -9 pid : to kill a background job
kill -l : to find out all the signals
supported by your system.
< ctrl_d>; End of file character
$ stty to see what are the KILL & <EOF>; characters
--------------------------------------------------------------------------------
The environment
+-----------------------------------------------+-----------------------+
| environmental characteristic | child inherit this ? |
+-----------------------------------------------+-----------------------+
| parent's access rights to files, directories | yes |
| the files that parent has opened | yes |
| parent's ressource limits (type ulimit) | yes |
| parent's response to signal | yes |
| aliases defined by parent | NO (expect opt -x) |
| functions defined by parent | if exported (*) |
| variables defined by parent | if exported (*) |
| KornShell variables (except IFS) | if exported (*) |
| KornShell variable IFS | if NOT exported |
| parent's option settings (type set -o) | no |
+-----------------------------------------------+-----------------------+
(*) Not needed if a 'set -o allexport' statement has told the KornShell to
export all these variables and functions
To export a variable :
$ export LPDEST=pshpa
$ echo $LPDEST --->; pshpa
$ echo LPDEST --->; LPDEST
Dot Scripts : a script that runs in the parent's environment, so it is not a child of the caller. A dot script inherits ALL of the caller's environment. To invoke a dot script, just preface the name of the script with a dot and a space :
$ ficus.ksh # invoke this script as a regular script.
$ . ficus.fsh # invoke the same script as a dot script.
Aliases : An alias is a nickname for a KornShell statement or script, a user program or a command. Example:
$ alias del='rm -i' # whenever you type 'del', it's replace by 'rm -i'
$ alias # to see a list of all aliases
$ unalias del # remove an alias
It is recommanded (but not mandatory) to write the local variable names in lower case letters and those of global variables in upper case letters.
Sequence of KornShell start-up scripts : The KornShell supports 3 start-up scripts. The first 2 are login scripts; they are executed when you log in. A third one runs whenever you create a KornShell or run a KornShell script.
- /etc/profile
- $HOME/.profile
Use this file to :
- set & export values of variables
- set options such as ignoreeof that you want to apply to your
login shell only
- specify a script to execute when yu log out
Example :
set -o allexport # export all variables
PATH=.:/bin:/usr/bin HOME/bin # define command search path
CDPATH=. HOME HOME/games # define search path for cd
FPATH=$HOME/mathlib:/usr/funcs # define path for autoload
PS1='! $PWD>; ' # define primary prompt
PS2='Line continues here>; ' # define secondary prompt
HISTSIZE=100 # define size of history file
ENV=$HOME/.kshrc # pathname of environment script
TMOUT=0 # KornShell won't be timed out
VISUAL=vi # make vi the comm. line editor
set +o allexport # turn off allexport feature
- script whose name is hold in the KornShell variable ENV
Use this file to :
- define aliases & functions that apply for interactive use only
- set default options that you want to apply to all ksh invocations
- set variables that you want to apply to the current ksh invoc.
Example :
# The information in this region will be accessible to the KornShell
# command line and scripts.
alias -x disk='du' # -x makes alias accessible to scripts
case $- in
*i*) # Here you are NOT in a script
alias copy='cp';;
esac
KornShell Reserved variables :
+-----------+-----------------------------------+-------------------+------+
| Variable | What this variable holds | Default | Who |
| | | | sets |
+-----------+-----------------------------------+-------------------+------+
| CDPATH | directories that cd searches | none | U |
| COLUMNS | terminal width | 80 | SA |
| EDITOR | pathname of command line editor | /bin/ed | U,SA |
| ENV | pathname of startup script | none | U,SA |
| ERRNO | error number of most recently | none | KSH |
| | failed system call | | |
| FCEDIT | pathname of history file editor | /bin/ed | U,SA |
| FPATH | path of autoload functions | none | U |
| HISTFILE | pathname of history file | $HOME/.sh_history | U,SA |
| HISTFILE | nb of command in history file | 128 | U,SA |
| HOME | login directory | none | SA |
| IFS | set of token delimiters | white space | U |
| LINENO | current line number within | none | KSH |
| | script or function | | |
| LINES | terminal height | 24 | SA |
| LOGNAME | user name | none | SA |
| MAIL | patname of master mail file | none | SA |
| MAILCHECK | mail checking frequency | 600 seconds | U,SA |
| MAILPATH | pathnames of master mail files | none | SA |
| OLDPWD | previous current directory | none | KSH |
| OPTARG | name of argument to a switch | none | KSH |
| OPTIND | option's ordinal position on | none | KSH |
| | command line | | |
| PATH | command search directories | /bin:/usr/bin | U,SA |
| PPID | PID of parent | none | KSH |
| PS1 | command line prompt | $ | U |
| PS2 | prompt for commands that | >; | U |
| | extends more than 1 line | | |
| PS3 | prompt of 'select' statements | #? | U |
| PS4 | debug mode prompt | + | U |
| PWD | current directory | none | U |
| RANDOM | random integer | none | KSH |
| REPLY | input repository | none | KSH |
| SECONDS | nb of seconds since KornShell | none | KSH |
| | was invoked | | |
| SHELL | executed shell (sh, csh, ksh) | none | SA |
| TERM | type of terminal you're using | none | SA |
| TMOUT | turn off (timeout) an unused | 0 (unlimited) | KSH |
| | KornShell | | |
| VISUAL | command line editor | /bin/ed | U,SA |
| $ | PID of current process | none | KSH |
| ! | PID of the background process | none | KSH |
| ? | last command exit status | none | KSH |
| _ | miscellaneous data | none | KSH |
+-----------+-----------------------------------+-------------------+------+
| Variable | What this variable holds | Default | Who |
| | | | sets |
+-----------+-----------------------------------+-------------------+------+
Where U : User sets this variable
SA : system administrator
KSH: KornShell
To get a list of exported objetcts available to the current environment :
$ typeset -x # list of exported variables
$ typeset -fx # list of exported functions
To get a list of environment variables :
$ set
--------------------------------------------------------------------------------
Most usual commands
Help
>; man command Ex: >; man man
>; man -k keyword list of commands related to this keyword
>; apropos keyword locates commands by keyword lookup
>; whatis command brief command description
Directory listing
>; ls [opt]
-a list hidden files
-d list the name of the current directory
-F show directories with a trailing '/'
executable files with a trailing '*'
-g show group ownership of file in long listing
-i print the inode number of each file
-l long listing giving details about files and directories
-R list all subdirectories encountered
-t sort by time modified instead of name
Creating / Deleting a directory
>; mkdir dir_name
>; rmdir dir_name (directory must be empty)
Changing directory
>; cd pathname
>; cd
>; cd ~tristram
>; cd - # return to the previous working directory
>; pwd # display the path name of the working directory
Comparing files
>; diff f1 f2 text files comparison
>; sdiff f1 f2 idem in 2 columns
>; diff dir1 dir2 directory comparison
>; cmp f1 f2 for binary files
>; file filename determine file type
>; comm f1 f2 compare lines common to 2 sorted files
Access to files
user group others
r w x rwx rwx
4 2 1
>; ls -l display access permission
>; chmod 754 file change access (rwx r-x r--)
>; chmod u+x file1 gives yourself permition to execute file1
>; chmod g+re file2 gives read and execute permissions for group members
>; chmod a+r *.pub gives read permition to everyone
>; umask 002 (default permissions : inverse) removes write permission
for other in this example
>; groups username to find out which group 'username' belongs to
>; ls -gl list the group ownwership of the files
>; chgrp group_name file/directory_name
change the group ownwership
copying files and directories
>; cp [-opt] source destination
>; cp source path_to_destination copy a file into another
>; cp *.txt dir_name copy a file to another directory
>; cp -r dir1 dir2 copy several files into a directory
>; cat fil1 fil2 >; fil3 concatenates fil1 and fil2, and places
the result in fil3
deleting files & directory
>; rm [opt] filename
>; rm -r dir_name
>; rmdir dirname
moving files & directories
>; mv [opt] file1 file2
>; mv [opt] dir1 dir2
>; mv [opt] file dir
Visualizing files
>; cat file1 file2 ... print all files on stdout
>; more file print 'file' on stdout, pausing at each end of page
>; pg file idem, with more options
>; od file octal dump for a binary file
>; tail file list the end of a file (last lines)
>; tail -n file idem for the last n lines
>; tail -f file idem, but read repeatedly in case the file grows
>; tail +n file read the fisrt n lines of 'file'
>; head give first few lines
linking files & directories
>; ln [-opt] source linkname
The 2 names (source & linkname) address the same
file or directory
>; ln part1.txt ../helpdata/sect1 /public/helpdoc/part1
This links part1.txt to ../helpdata/sect1 and
/public/helpdoc/part1.
>; ln -s sdir/file . makes a symbolic link between 'file' in the
subdirectory 'sdir' to the filename 'file' in
the current directory
>; ln ~sandra/prog.c . To make a link to a file in another user's home
directory
>; ln -s directory_name(s) directory_name
To link one or more directories to another dir.
>; ln -s $HOME/accounts/may .
To link a directory into your current directory
Examples :
>; ln -s /net/cdfap2/user/jmb cdfap2
>; ln -s ~frenkiel/cdf/man/manuel pfmanuel
Compiling & Linking
Use "man xxx" to have a precise description of the following commands :
>; cc C compiler
>; f77 Fortran compiler
>; ar archive & library maintainer
>; ld link editor
>; dbx symbolic debugger
Examples :
>; cc hello.c executable : a.out
>; f77 hello.f idem
>; cc main.c func1.c func2.c sevaral files
>; cc hello.c -o hello redefine the executable name
>; cc -c func1.c compilation only, then :
>; cc main.c func1.o -o prog
Job control
>; nohup command run a command immune to hangups, logouts,
and quits
>; at, batch execute commands at a later time (see 'man at')
>; jobs [-lp] [job_name] Display informations about jobs
>; kill -l Display signal numbers ans names
>; kill [-signal] job... Send a signal to the specified jobs
>; wait [job...] Wait for the specified jobs to terminate
(or for all child processes if no argument)
>; ps List executing processes
miscellaneous
>; who [am i] lists names of users currently logged in
>; rwho idem for all machines on the local network
>; w idem + what they are doing
>; whoami your userid
>; groups names of the groups you belong to
>; hostname name of the host currently connected
>; finger names of users, locally or remotly logged in
>; finger name information about this user
>; finger name@cdfhp3
>; mail electronic mail
>; grep searching strings in files
>; sleep sleep for a given amount of time (shell scripts)
>; sort sort items in a file
>; touch change the modification time of a file
>; tar compress all files in a directory (and its
subdirectories) into one file
>; type tells you where a command is located (or what it is an
alias for)
>; find pathname -name "name" -print
seach recursively from pathename for "name". "name" can
contain wild chars.
>; findw string
search recursively for filenames containing 'string'
>; file fich tries to guess the type of 'fich' (wild chars allowed)
>; passwd changing Pass Word
>; sh -x command Debugging a shell script
>; echo $SHELL Finding out which shell you are using
/.../sh Bourne shell
/.../csh C shell
/.../tcsh TC shell
/.../ksh Korn shell
/.../bash Bourne Again SHell
>; df gives a list of available disk space
>; du gives disk space used by the current directory and all
its subdirectories
>; time command execute 'command' and then, gives the elapse time
>; ruptime gives the status of all machines on the local network
>; telnet host for remote login
>; rlogin host idem for machines running UNIX
>; stty set terminal I/O options
(without args or with -a, list current settings)
>; tty, pty get the name of the terminal
>; write user_name send a message (end by < ctrl_d -->; to a logged user
>; msg y enable message reception
>; msg n disable message recpt.
>; mes status of mes. recept.
>; wall idem write, but for all logged users.
>; date display date and time on standard output
>; ulimit set or display system ressource limits
>; whence command find pathname corresponding to 'command'
>; whence -v name gives the type of 'name' (built-in, alias, files ...)
>; tee [-a] file reads standard input, writes to standard output and
file. Appends to 'file' if option -a
>; wc file Counts lines, words and chars in 'file'
for other commands, looks in appendix or in directories such as :
/bin
/usr/bin
/usr/ucb
/usr/local/bin
History & Command line editing
>; history
>; history 166 168 # list commands 166 through 168
>; history -r 166 168 # idem in reverse order
>; history -2 # list previous 2 commands
>; history set # list commands from most recent set command
>; r # repeat last command
>; r cc # repeat most recent command starting with cc
>; r foo=bar cc # idem, changing 'foo' to 'bar'
>; r 215 # repeat command 215
>; r math.c=cond.c 214 # repeat command 214, but substitute cond.c
# for math.c
You can edit the command line with the 'vi' or 'emacs' editor :
Put the following line inside a KornShell login script :
FCEDIT=vi; export FCEDIT
$ set -o emacs
>; fc [-e editor] [-nlr] [first [last]]
* display (-l) commands from history file
* Edit and re-execute previous commands (FCEDIT if no -e).
'last' and 'first' can be numbers or strings
$ fc # edit a copy of last command
$ fc 271 # edit, then re-execute command number 271
$ fc 270 272 # group command 270, 271 & 272, edit, re-execute
--------------------------------------------------------------------------------
Creating KORNshell scripts
The different shells
/bin/csh C shell (C like command syntax)
/bin/sh Bourne shell (the oldest one)
/bin/ksh Korn shell (variant of the previous one)
+ public domain (tcsh, bash, ...)
Special shell variables
There are some variables which are set internally by the shell and which are available to the user:
$1 - $9 these variables are the positional parameters.
$0 the name of the command currently being executed.
$argv[20] refers to the 20th command line argument
$# the number of positional arguments given to this
invocation of the shell.
$? the exit status of the last command executed is
given as a decimal string. When a command
completes successfully, it returns the exit status
of 0 (zero), otherwise it returns a non-zero exit
status.
$$ the process number of this shell - useful for
including in filenames, to make them unique.
$! the process id of the last command run in
the background.
$- the current options supplied to this invocation
of the shell.
$* a string containing all the arguments to the
shell, starting at $1.
$@ same as above, except when quoted :
"$*" expanded into ONE long element : "$1 $2 $3"
"$@" expanded into THREE elements : "$1" "$2" "$3"
shift : $2 ->; $1 ...)
special characters
The special chars of the Korn shell are :
$ \ # ? [ ] * + & | ( ) ; ` " '
- A pair of simple quotes '...' turns off the significance of ALL enclosed chars
- A pair of double quotes "..." : idem except for $ ` " \
- A '\' shuts off the special meaning of the char immediately to its right.
Thus, \$ is equivalent to '$'.
- In a script shell :
# : all text that follow it up the newline is a comment
\ : if it is the last char on a line, signals a continuation line
qui suit est la continuation de celle-ci
Evaluating shell variables
The following set of rules govern the evaluation of all shell variables.
$var signifies the value of var or nothing,
if var is undefined.
${var} same as above except the braces enclose
the name of the variable to be substituted.
+-------------------+---------------------------+-------------------+
| Operation | if str is unset or null | else |
+-------------------+---------------------------+-------------------+
| var=${str:-expr} | var= expr | var= ${string} |
| var=${str:=expr} | str= expr ; var= expr | var= ${string} |
| var=${str:+expr} | var becomes null | var= expr |
| var=${str expr} | expr is printed on stderr | var= ${string} |
+-------------------+---------------------------+-------------------+
The if statement
The if statement uses the exit status of the given command
if test
then
commands (if condition is true)
else
commands (if condition is false)
fi
if statements may be nested:
if ...
then ...
else if ...
...
fi
fi
Test on numbers :
((number1 == number2))
((number1 != number2))
((number1 number2))
((number1 >; number2))
((number1 = number2))
((number1 >;= number2))
Warning : 5 different possible syntaxes (not absolutely identical) :
if ((x == y))
if test $x -eq $y
if let "$x == $y"
if [ $x -eq $y ]
if [[ $x -eq $y ]]
Test on strings: (pattern may contain special chars)
[[string = pattern]]
[[string != pattern]]
[[string1 string2]]
[[string1 >; string2]]
[[ -z string]] true if length is zero
[[ -n string]] true if length is not zero
Warning : 3 different possible syntaxes :
if [[ $str1 = $str2 ]]
if [ "$str1" = "$str2" ]
if test "$str1" = "$str2"
Test on objects : files, directories, links ...
examples :
[[ -f $myfile ]] # is $myfile a regular file?
[[ -x /usr/users/judyt ]] # is this file executable?
+---------------+---------------------------------------------------+
| Test | Returns true if object... |
+---------------+---------------------------------------------------+
| -a object | exist; any type of object |
| -f object | is a regular file or a symbolic link |
| -d object | is a directory |
| -c object | is a character special file |
| -b object | is a block special file |
| -p object | is a named pipe |
| -S object | is a socket |
| -L object | is a symbolic (soft) link with another object |
| -k object | object's "sticky bit" is set |
| -s object | object isn't empty |
| -r object | I may read this object |
| -w object | I may write to (modify) this object |
| -x object | object is an executable file |
| | or a directory I can search |
| -O object | I ownn this object |
| -G object | the group to which I belong owns object |
| -u object | object's set-user-id bit is set |
| -g object | object's set-group-id bit is set |
| obj1 -nt obj2 | obj1 is newer than obj2 |
| obj1 -ot obj2 | obj1 is older than obj2 |
| obj1 -ef obj2 | obj1 is another name for obj2 (equivalent) |
+---------------+---------------------------------------------------+
The logical operators
You can use the && operator to execute a command and, if it is successful, execute the next command in the list. For example:
cmd1 && cmd2
cmd1 is executed and its exit status examined. Only if cmd1 succeeds is cmd2 executed. You can use the || operator to execute a command and, if it fails, execute the next command in the command list.
cmd1 || cmd2
Of course, ll combinaisons of these 2 operators are possible. Example :
cmd1 || cmd2 && cmd3
Math operators
First, don't forget that you have to enclose the entire mathematical operation within a DOUBLE pair of parentheses. A single pair has a completely different meaning to the Korn-Shell.
+-----------+-----------+-------------------------+
| operator | operation | example |
+-----------+-----------+-------------------------+
| + | add. | ((y = 7 + 10)) |
| - | sub. | ((y = 7 - 10)) |
| * | mult. | ((y = 7 * 4)) |
| / | div. | ((y = 37 / 5)) |
| % | modulo | ((y = 37 + 5)) |
| | shift | ((y = 2#1011 2)) |
| >;>; | shift | ((y = 2#1011 >;>; 2)) |
| & | AND | ((y = 2#1011 & 2#1100)) |
| ^ | excl OR | ((y = 2#1011 ^ 2#1100)) |
| | | OR | ((y = 2#1011 | 2#1100)) |
+-----------+-----------+-------------------------+
Controlling execution
goto my_label
......
my_label:
-----
case value in
pattern1) command1 ; ... ; commandN;;
pattern2) command1 ; ... ; commandN;;
........
patternN) command1 ; ... ; commandN;;
esac
where : value value of a variable
pattern any constant, pattern or group of pattern
command name of any program, shell script or ksh statement
example 1 :
case $advice in
[Yy][Ee][Ss]) print "A yes answer";;
[Mm]*) print "M followed by anything";;
+([0-9)) print "Any integer...";;
"oui" | "bof" print "one or the other";;
*) print "Default";;
example 2 : Creating nice menus
PS3="Enter your choice :"
select menu_list in English francais
do
case $menu_list in
English) print "Thank you";;
francais) print "Merci";;
*) print "???"; break;;
esac
done
-----
while( logical expression)
do
....
done
while : # infinite loop
....
done
while read line # read until an EOF (or <crtl_d>; )
do
....
done fname # redirect input within this while loop
until( logical expression)
do
....
done <fin >;fout # redirect both input and output
-----
for name in 1 2 3 4 # a list of elements
do
....
done
for obj in * # list of every object in the current directory
do
....
done
for obj in * */* # $PWD and the next level below it contain
do
....
done
-----
break; # to leave a loop (while, until, for)
continue; # to skip part of one loop iteration
# nested loops are allowed in ksh
----
select ident in Un Deux # a list of identifiers
do
case $ident in
Un) ....... ;;
Deux) ..... ;;
*) print " Defaut" ;;
esac
done
Debug mode
>; ksh -x script_name
ou, dans un 'shell script' :
set -x # start debug mode
set +x # stop debug mode
Examples
Example 1 : loops, cases ...
#!/bin/ksh
USAGE="usage : fmr [dir_name]" # how to invoke this script
print "
+------------------------+
| Start fmr shell script |
+------------------------+
"
function fonc
{
echo "Loop over params, with shift function"
for i do
print "parameter $1" # print is equivalent to echo
shift
done # Beware that $# in now = 0 !!!
}
echo "Loop over all ($#) parameters : $*"
for i do
echo "parameter $i"
done
#----------------------
if (( $# >; 0 )) # Is the first arg. a directory name ?
then
dir_name=$1
else
print -n "Directory name:"
read dir_name
fi
print "You specified the following directory; $dir_name"
if [[ ! -d $dir_name ]]
then
print "Sorry, but $dir_name isn't the name of a directory"
else
echo "-------- List of directory $dir_name -----------------"
ls -l $dir_name
echo "------------------------------------------------------"
fi
#----------------------
echo "switch on #params"
case $# in
0) echo "command with no parameter";;
1) echo "there is only one parameter : $1";;
2) echo "there are two parameters";;
[3,4]) echo "3 or 4 params";;
*) echo "more than 4 params";;
esac
#----------------------
fonc
echo " arameters number (after function fonc) : $#"
#------- To read and execute a command
echo "==>; Enter a name"
while read com
do
case $com in
tristram) echo "gerard";;
guglielmi) echo "laurent";;
dolbeau) echo "Jean";;
poutot) echo "Daniel ou Claude ?";;
lutz | frenkiel) echo " ierre";;
brunet) echo "You lost !!!"; exit ;;
*) echo "Unknown guy !!! ( $com )"; break ;;
esac
echo "==>; another name, please"
done
#------ The test function :
echo "Enter a file name"
read name
if [ -r $name ]
then echo "This file is readable"
fi
if [ -w $name ]
then echo "This file is writable"
fi
if [ -x $name ]
then echo "This file is executable"
fi
#------
echo "--------------- Menu select ----------"
PS3="Enter your choice: "
select menu_list in English francais quit
do
case $menu_list in
English) print "Thank you";;
francais) print "Merci.";;
quit) break;;
*) print " ????";;
esac
done
print "So long!"
Example 2 : switches
#!/bin/ksh
USAGE="usage: gopt.ksh [+-d] [ +-q]" # + and - switches
while getopts :dq arguments # note the leading colon
do
case $arguments in
d) compile=on;; # don't precede d with a minus sign
+d) compile=off;;
q) verbose=on;;
+q) verbose=off;;
\?) print "$OPTARG is not a valid option"
print "$USAGE";;
esac
done
print "compile=$compile - verbose= $verbose"
Example 3
###############################################################
# This is a function named 'sqrt'
function sqrt # square the input argument
{
((s = $1 * $1 ))
}
# In fact, all KornShell variables are, by default, global
# (execpt when defined with typeset, integer or readonly)
# So, you don't have to use 'return $s'
###############################################################
# The shell script begins execution at the next line
print -n "Enter an integer : "
read an_integer
sqrt $an_integer
print "The square of $an_integer is $s"
Example 4
#!/bin/ksh
############ Using exec to do I/O on multiple files ############
USAGE="usage : ex4.ksh file1 file2"
if (($# != 2)) # this script needs 2 arguments
then
print "$USAGE"
exit 1
fi
############ Both arguments must be readable regular files
if [[ (-f $1) && (-f $2) && (-r $1) && (-r $2) ]]
then # use exec to open 4 files
exec 3 <$1 # open $1 for input
exec 4 <$2 # open $2 for input
exec 5>; match # open file "match" for output
exec 6>; nomatch # open file "nomatch" for output
else # if user enters bad arguments
print "$ USAGE"
exit 2
fi
while read -u3 lineA # read a line on descriptor 3
do
read -u4 lineB # read a line on descriptor 4
if [ "$lineA" = "$lineB" ]
then # send matching line to one file
print -u5 "$lineA"
else # send nonmatching lines to another
print -u6 "$lineA; $lineB"
fi
done
print "Done, today : $(date)" # $(date) : output of 'date' command
date_var=$(date) # or put it in a variable
print " I said $date_var" # and print it...
Example 5
############ String manipulation examples ##################
read str1?"Enter a string: "
print "\nYou said : $str1"
typeset -u str1 # Convert to uppercase
print "UPPERCASE: $str1"
typeset -l str1 # Convert to lowercase
print "lowercase: $str1"
typeset +l str1 # turn off lowercase attribute
read str2?"Enter another one: "
str="$str1 and $str2" #concatenate 2 strings
print "String concatenation : $str"
# use '#' to delete from left
# '##' to delete all
# '%' to delete all
# '%%' to delete from right
print "\nRemove the first 2 chars -- ${str#??}"
print "Remove up to (including) the first 'e' -- ${str#*e}"
print "Remove the first 2 words -- ${str#* * }"
print "\nRemove the last 2 chars -- ${str%??}"
print "Remove from last 'e' -- ${str%e*}"
print "Remove the last 2 tokens -- ${str% * *}"
print "length of the string= ${#str}"
########################
# Parsing strings into words :
typeset -l line # line will be stored in lowercase
read finp?" athname of the file to analyze: "
read fout?" athname of the file to store words: "
# Set IFS equal to newline, space, tab and common punctuation marks
IFS="
,. ;!?"
while read line # read one line of text
do # then Parse it :
if [[ "$line" != "" ]] # ignore blank lines
then
set $line # parse the line into words
print "$*" # print each word on a separate line
fi
done < $finp >; $fout # define the input & output paths
sort $fout | uniq | wc -l # UNIX utilities
--------------------------------------------------------------------------------
List of Usual commands
adb absolute debugger
adjust simple text formatter
admin create and administer SCCS files
ar maintain portable archives and libraries
as assembler
asa interpret ASA carriage control characters
astrn translate assembly language
at, batch execute commands at a later time
atime time an assembly language instruction sequence
atrans translate assembly language
awk pattern - directed scanning and processing language
banner make posters in large letters
basename, dirname extract portions of path names
bc arbitrary - precision arithmetic language
bdftosnf BDF to SNF font compiler for X11
bdiff big diff
bfs big file scanner
bifchmod change mode of a BIF file
bifchown, bifchgrp change file owner or group
bifcp copy to or from BIF files
biffind find files in a BIF system
bifls list contents of BIF directories
bifmkdir make a BIF directory
bifrm, bifrmdir remove BIF files or directories
bitmap, bmtoa bitmap editor and converter utilities
bs a compiler/interpreter for modest - sized programs
cal print calendar
calendar reminder service
cat concatenate, copy, and print files
cb C program beautifier, formatter
cc, c89 C compiler
cd change working directory
cdb, fdb, pdb C, C++, FORTRAN, Pascal symbolic debugger
cdc change the delta commentary of an SCCS delta
cflow generate C flow graph
chacl add, modify, delete, copy, or summarize access con
chatr change program's internal attributes
checknr check nroff/troff files
chfn change finger entry
chmod change file mode
chown, chgrp change file owner or group
chsh change default login shell
ci check in RCS revisions
clear clear terminal screen
cmp compare two files
cnodes display information about specified cluster nodes
co check out RCS revisions
col filter reverse line - feeds and backspaces
comb combine SCCS deltas
comm select or reject lines common to two sorted files
compact, uncompact compact and uncompact files
cp copy files and directory subtrees
cpio copy file archives in and out
cpp the C language preprocessor
crontab user crontab file
crypt encode/decode files
csh a shell (command interpreter) with C - like syntax
csplit context split
ct spawn getty to a remote terminal (call terminal)
ctags create a tags file
cu call another (UNIX) system; terminal emulator
cut cut out (extract) selected fields of each line of a
cxref generate C program cross - reference
date print or set the date and time
datebook calendar and reminder program for X11
dbmonth datebook monthly calendar formatter for postscript
dbweek datebook weekly calendar formatter for postscript
dc desk calculator
dd convert, reblock, translate, and copy a (tape) file
delta make a delta (change) to an SCCS file
deroff remove nroff, tbl, and neqn constructs
diff differential file and directory comparator
diff3 3 - way differential file comparison
diffmk mark differences between files
dircmp directory comparison
domainname set or display name of Network Information Ser -
dos2ux, ux2dos convert ASCII file format
doschmod change attributes of a DOS file
doscp copy to or from DOS files
dosdf report number of free disk clusters
dosls, dosll list contents of DOS directories
dosmkdir make a DOS directory
dosrm, dosrmdir remove DOS files or directories
du summarize disk usage
echo echo (print) arguments
ed, red text editor
elm process mail through screen - oriented interface
elmalias create and verify elm user and system aliases
enable, disable enable/disable LP printers
env set environment for command execution
et Datebook weekly calendar formatter for laserjet
ex, edit extended line - oriented text editor
expand, unexpand expand tabs to spaces, and vice versa
expr evaluate arguments as an expression
expreserve preserve editor buffer
factor, primes factor a number, generate large primes
file determine file type
find find files
findmsg, dumpmsg create message catalog file for modification
findstr find strings for inclusion in message catalogs
finger user information lookup program
fixman fix manual pages for faster viewing with
fold fold long lines for finite width output device
forder convert file data order
from who is my mail from?
ftio faster tape I/O
ftp file transfer program
gencat generate a formatted message catalog file
get get a version of an SCCS file
getaccess list access rights to
getconf get system configuration values
getcontext display current context
getopt parse command options
getprivgrp get special attributes for group
gprof display call graph profile data
grep, egrep, fgrep search a file for a pattern
groups show group memberships
gwindstop terminate the window helper facility
help ask for help
hostname set or print name of current host system
hp handle special functions of HP2640 and HP2621 - series
hpterm X window system Hewlett - Packard terminal emulator.
hyphen find hyphenated words
iconv code set conversion
id print user and group IDs and names
ident identify files in RCS
ied input editor and command history for interactive progs
imageview display TIFF file images on an X11 display
intro introduction to command utilities and application
iostat report I/O statistics
ipcrm remove a message queue, semaphore set or shared
ipcs report inter - process communication facilities status
join relational database operator
kermit kermit file transfer
keysh context - sensitive softkey shell
kill terminate a process
ksh, rksh shell, the standard/restricted command program
lastcomm show last commands executed in reverse order
ld link editor
leave remind you when you have to leave
lex generate programs for lexical analysis of text
lifcp copy to or from LIF files
lifinit write LIF volume header on file
lifls list contents of a LIF directory
lifrename rename LIF files
lifrm remove a LIF file
line read one line from user input
lint a C program checker/verifier
ln link files and directories
lock reserve a terminal
logger make entries in the system log
login sign on
logname get login name
lorder find ordering relation for an object library
lp, cancel, lpalt send/cancel/alter requests to an LP line
lpstat print LP status information
ls, l, ll, lsf, lsr, lsxlist contents of directories
lsacl list access control lists (ACLs) of files
m4 macro processor
mail, rmail send mail to users or read mail
mailfrom summarize mail folders by subject and sender
mailstats print mail traffic statistics
mailx interactive message processing system
make maintain, update, and regenerate groups of programs
makekey generate encryption key
man find manual information by keywords; print out a
mediainit initialize disk or cartridge tape media
merge three - way file merge
mesg permit or deny messages to terminal
mkdir make a directory
mkfifo make FIFO (named pipe) special files
mkfontdir create fonts.dir file from directory of font
mkmf make a makefile
mkstr extract error messages from C source into a file
mktemp make a name for a temporary file
mm, osdd print documents formatted with the mm macros
more, page file perusal filter for crt viewing
mt magnetic tape manipulating program
mv move or rename files and directories
mwm The Motif Window Manager.
neqn format mathematical text for nroff
netstat show network status
newform change or reformat a text file
newgrp log in to a new group
newmail notify users of new mail in mailboxes
news print news items
nice run a command at low priority
nl line numbering filter
nljust justify lines, left or right, for printing
nlsinfo display native language support information
nm print name list of common object file
nm print name list of common object file.
nm print name list of object file
nodename assign a network node name or determine current
nohup run a command immune to hangups, logouts, and quits
nroff format text
nslookup query name servers interactively
od, xd octal and hexadecimal dump
on execute command on remote host with environment similar
pack, pcat, unpack compress and expand files
pam Personal Applications Manager, a visual shell
passwd change login password
paste merge same lines of several files or subsequent
pathalias electronic address router
pax portable archive exchange
pcltrans translate a Starbase bitmap file into PCL raster
pg file perusal filter for soft - copy terminals
ppl point-to - point serial networking
pplstat give status of each invocation of
pr print files
praliases print system - wide sendmail aliases
prealloc preallocate disk storage
printenv print out the environment
printf format and print arguments
prmail print out mail in the incoming mailbox file
prof display profile data
protogen ANSI C function prototype generator
prs print and summarize an SCCS file
ps, cps report process status
ptx permuted index
pwd working directory name
pwget, grget get password and group information
quota display disk usage and limits
rcp remote file copy
rcs change RCS file attributes
rcsdiff compareRCS revisions
rcsmerge merge RCS revisions
readmail read mail from specified mailbox
remsh execute from a remote shell
resize reset shell parameters to reflect the current size
rev reverse lines of a file
rgb X Window System color database creator.
rlog print log messages and other information on RCS files
rlogin remote login
rm remove files or directories
rmdel remove a delta from an SCCS file
rmdir remove directories
rmnl remove extra new - line characters from file
rpcgen an RPC protocol compiler
rtprio execute process with real - time priority
rup show host status of local machines (RPC version)
ruptime show status of local machines
rusers determine who is logged in on machines on local
rwho show who is logged in on local machines
sact print current SCCS file editing activity
sar system activity reporter
sb2xwd translate Starbase bitmap to xwd bitmap format
sbvtrans translate a Starbase HPSBV archive to Personal
sccsdiff compare two versions of an SCCS file
screenpr capture the screen raster information and
script make typescript of terminal session
sdfchmod change mode of an SDF file
sdfchown, sdfchgrp change owner or group of an SDF file
sdfcp, sdfln, sdfmv copy, link, or move files to/from an
sdffind find files in an SDF system
sdfls, sdfll list contents of SDF directories
sdfmkdir make an SDF directory
sdfrm, sdfrmdir remove SDF files or directories
sdiff side-by - side difference program
sed stream text editor
sh shell partially based on preliminary POSIX draft
sh, rsh shell, the standard/restricted command programming
shar make a shell archive package
shl shell layer manager
showcdf show the actual path name matched for a CDF
size print section sizes of object files
sleep suspend execution for an interval
slp set printing options for a non - serial printer
soelim eliminate .so's from nroff input
softbench SoftBench Software Development Environment
sort sort and/or merge files
spell, hashmake spelling errors
split split a file into pieces
ssp remove multiple line - feeds from output
stconv Utility to convert scalable type symbol set map
stlicense server access control program for X
stload Utility to load Scalable Type outlines
stmkdirs Utility to build Scalable Type ``.dir'' and
stmkfont Scalable Typeface font compiler to create X and
strings find the printable strings in an object or other
strip strip symbol and line number information from an
stty set the options for a terminal port
su become super - user or another user
sum print checksum and block or byte count of
tabs set tabs on a terminal
tar tape file archiver
tbl format tables for nroff
tcio Command Set 80 CS/80 Cartridge Tape Utility
tee pipe fitting
telnet user interface to the TELNET protocol
test condition evaluation command
tftp trivial file transfer program
time time a command
timex time a command; report process data and system
touch update access, modification, and/or change times of
tput query terminfo database
tr translate characters
true, false return zero or one exit status respectively
tset, reset terminal - dependent initialization
tsort topological sort
ttytype terminal identification program
ul do underlining
umask set file - creation mode mask
umodem XMODEM - protocol file transfer program
uname print name of current HP - UX version
unget undo a previous get of an SCCS file
unifdef remove preprocessor lines
uniq report repeated lines in a file
units conversion program
uptime show how long system has been up
users compact list of users who are on the system
uucp, uulog, uuname UNIX system to UNIX system copy
uuencode, uudecode encode/decode a binary file for
uupath, mkuupath access and manage the pathalias database
uustat uucp status inquiry and job control
uuto, uupick public UNIX system to UNIX system file copy
uux UNIX system to UNIX system command execution
vacation return ``I am not here'' indication
val validate SCCS file
vc version control
vi screen - oriented (visual) display editor
vis, inv make unprintable characters in a file visible or
vmstat report virtual memory statistics
vt log in on another system over lan
wait await completion of process
wc word, line, and character count
what get SCCS identification information
which locate a program file including aliases and paths
who who is on the system
whoami print effective current user id
write interactively write (talk) to another user
x11start start the X11 window system
xargs construct argument
xcal display calendar in an X11 window
xclock analog / digital clock for X
xdb C, FORTRAN, Pascal, and C++ Symbolic Debugger
xdialog display a message in an X11 Motif dialog window
xfd font displayer for X
xhost server access control program for X
xhpcalc Hewlett - Packard type calculator emulator
xinit X Window System initializer
xinitcolormap initialize the X colormap
xline an X11 based real - time system resource observation
xload load average display for X
xlsfonts server font list displayer for X
xmodmap utility for modifying keymaps in X
xpr print an X window dump
xrdb X server resource database utility
xrefresh refresh all or part of an X screen
xseethru opens a transparent window into the image planes
xset user preference utility for X
xsetroot root window parameter setting utility for X
xstr extract strings from C programs to implement shared
xtbdftosnf BDF to SNF font compiler (HP 700/RX)
xterm terminal emulator for X
xthost server access control program for X
xtmkfontdir create a fonts.dir file for a directory of
xtshowsnf print contents of an SNF file (HP 700/RX)
xtsnftosnf convert SNF file from one format to another (HP
xwcreate create a new X window
xwd dump an image of an X window
xwd2sb translate xwd bitmap to Starbase bitmap format
xwdestroy destroy one or more existing windows
xwininfo window information utility for X
xwud image displayer for X
yacc yet another compiler - compiler
yes be repetitively affirmative
ypcat print all values in Network Information Service map
ypmatch print values of selected keys in Network Information
yppasswd change login password in Network Information System
ypwhich list which host is Network Information System
--------------------------------------------------------------------------------
List of Administrator commands
accept, reject allow/prevent LP requests
acctcms command summary from per - process accounting
acctcom search and print process accounting
acctcon1, acctcon2 time accounting
acctdisk, acctdusg overview of account
acctmerg merge or add total accounting files
acctprc1, acctprc2 process accounting
arp address resolution display and control
audevent change or display event or system call audit
audisp display the audit information as requested by the
audomon audit overflow monitor daemon
audsys start or halt the auditing system and set or
audusr select users to audit
automount automatically mount NFS file systems
backup backup or archive file system
bdf report number of free disk blocks (Berkeley version)
bifdf report number of free disk blocks
biffsck Bell file system consistency check and interactive
biffsdb Bell file system debugger
bifmkfs construct a Bell file system
boot bootstrap process
bootpd Internet Boot Protocol server
bootpquery send BOOTREQUEST to BOOTP server
brc, bcheckrc, rc system initializa
buildlang generate and display locale.def file
captoinfo convert a termcap description into a terminfo
catman create the cat files for the manual
ccck HP Cluster configuration file checker
chroot change root directory for a command
clri clear inode
clrsvc clear x25 switched virtual circuit
cluster allocate resources for clustered operation
config configure an HP - UX system
convertfs convert a file system to allow long file names
cpset install object files in binary direct |
|