chapter 4 unix common shells commands
DESCRIPTION
Chapter 4 UNIX Common Shells Commands. By C. Shing ITEC Dept Radford University. Objectives. Understand different Unix shells and how to change Understand how to use wildcards Understand how to shell variables and how to set up Understand how to create sub-shells - PowerPoint PPT PresentationTRANSCRIPT
Chapter 4 UNIX Common Shells Commands
By C. Shing
ITEC Dept
Radford University
Objectives
• Understand different Unix shells and how to change
• Understand how to use wildcards• Understand how to shell variables and
how to set up• Understand how to create sub-shells• Understand common shell commands• Understand the difference of using
arithmetic expressions in all four shells
Unix Shells
4 Unix command shells: 1. Bourne (by Steve Bourne): provided in most Unix machines,
use /bin/sh to create a sub-shell, good for batch processing, lack of aliases and command history, prompt $
2. C (by Bill Joy): good for interactive work, use /bin/csh to create a sub-shell, has aliases and command history, prompt %
3. Korn (by David Korn): combine interactive features from C shell and programming features from Bourne shell, lack of directory stack manipulation and weak aliases, use /bin/ksh to create a sub-shell, prompt $
4. Bash(Bourne Again by GNU): most freely available, conform to POSIX shell specification, use /bin/bash to create a sub-shell, prompt bash$
• Note: use chsh to change to different login shell.
Linux Command Options
• There are 3 options are available for Linux commands:
1. Use – (Common used in Unix)2. Use - - (POSIX form)3. Use nothing (BSD form)
Example: ls –l (common form) ls - - l (POSIX form) ls l (BSD form)
Shell Wildcard
Name Explain
* 0 or more characters
? match any one character
[...] match any one of the characters within [ ]
Shell Wildcard
• Examples:– ls *
list all filenames– ls ?
list filenames having one character
Shell Variables
1. Environment (or Global) variables: (upper case letter) copied automatically to sub-shell
• Built-in• User-defined
2. Local Variables: used in individual shell only
• Built-in• User-defined
Shell Variables – built-in Environment
• Built-in Environment Variables
Name Explain
$HOME Home directory
$PATH Searched path
$MAIL Mailbox path
$USER Username
$SHELL Login shell
$TERM Terminal type
Shell Variables – built-in Environment
• Examples: Check environment variables– env,
an external command and runs in a child process
– or echo $TERM
Shell Variables – set-up Environment
• Examples: Change environment variables– set TERM=vt100 or– setenv TERM vt100
Shell Variables – built-in Local
• Built-in Local Variables
Name Explain
$$ Shell PID
$0, $1, …, $9
Shell command line parameters
$* All shell command line parameters
Shell Variables – built-in Local
• Examples: Check Local variables– echo $variablename or – set
a shell built-in command
Shell Variables – set-up Local
• Examples: Change Local variables– set variablename=value
Process Control - ps
• ps: check process status– Syntax: ps –option
Option:e: list all currently running processes (A for Linux)f: gives full listing (give ancestry for Linux)l: gives long listingu username: list processes for the user only
Process Control - ps
• Example:– ps –el
list all process information with columns:S: state
S: sleeping O: running R: on run queue Z: zombie (parent didn’t wait for death of its child T: stopped or suspended
Note: A process is orphan if parent dies before its child
Process Control - ps
• Example: (Cont.)UIDPID: process idPPID: parent PIDPRI: prioritySZ: total pages in virtual memoryTIME: execution timeCMD: command
Process Control (Cont.)
• bg or &: sends foreground process to background
• Ctrl-z (or ctrl-]-z in DOS): stop process running• jobs: shows all background processes id• fg %id: sends background process id to
foreground• kill %id: terminate background process id• kill -9 pid: terminate foreground process id• Ctrl-c: terminate current running process
Process Control (Cont.)
• Note: for background process, no standard input is available, no way to see the standard output and standard error. You can either redirect output/error or let kernel to suspend the process right before standard output and standard error by setting as below:
stty tostop
Process Control (Cont.)
• Example: use one Unix window– cat– Ctrl-z– Jobs– cat > file2 &– jobs– fg %1– Ctrl-z– kill -9 %1 (or kill %cat or kill %?file2)– jobs– tty
find the terminal– fg
Process Control (Cont.)
• Example: (Cont.) use another one Unix window– ps –u username
find the process id for the previous shell– kill -9 PID
this will terminate the process: cat > file2
Create Sub-Shell
• 4 ways to create subshells: 1. group shell commands within ( ).
Examples: pwd; (cd /; pwd); pwdThe commands in ( ) are executed in a subshell.
2. invoke /bin/sh, /bin/csh, /bin/ksh, or /bin/bash
3. starts background processes. 4. starts a shell script
Common Shell Commands
• command substitution ` ` Examples: echo today is `date`
Common Shell Commands
• quoting(in pair):
• Rules: • double quotes prevents wildcard replacement
only. • single quote prevents wildcard replacement,
variable substitution and command substitution. • only the outer quote works if quotes are nested
Common Shell Commands• Examples:
echo *The shell expands *.
echo "*"The shell does not expands *.
echo '*'The shell does not expands *.
echo "the user is $USER and files are `ls *`"The shell expands $USER and *.
echo 'the user is $USER and files are `ls *`'The shell does not expands either $USER or *.
Common Shell Commands
• sleep n1The shell sleeps for n1 seconds.
• Examples:(sleep 5; echo subshell done)&; ps -f
Common Shell Commands
• wait [n]The shell suspends its processes until child PID n (background process) terminates.
• Examples:(sleep 10; echo done #1)&; (sleep 20; echo done #2)&; echo done #3; wait; echo done #4the shell prints done #3 and wait until subshell prints done #1, them done #2. Then it prints done #4.
Common Shell Commands
• exit nThe shell exits with return code n.
Common Shell Commands
• eval commandIt executes the output of the command as a regular shell command.Examples:eval `set echo x=2`; echo $x(Solaris)
• eval set echo x=2; echo $x(Linux)
Common Shell Commands
• exec commandIt executes the command and then terminates the shell.Examples:exec date
Common Shell Commands
• command1 && command2command2 will be executed after the success of executing command1Examples:gcc beep.c && a.out
Common Shell Commands
• command1 || echo error_messageerror_message will be printed after the failure of executing command1Examples:gcc beep_syntaxerror.c || echo compilation error
Difference in Arithmetic Expression
C Shell Bourne Shell
Korn Shell
Bash Shell
Start Up File
.cshrc, then .login
.profile .profile or .kshrc
.bashrc or .bash_profile
Arithmetic Expression
set x=1echo $x@ x ++echo $x
x=1echo $xx=`expr $x + 1`echo $x
let x=1echo $xlet x=x+1echo $x
declare -i xx=($x+1)echo $xx=($x+1)echo $x
Reference
Misc. (for Linux other than Ubantu)
killall –u uid: kills all other shell processes
killall -9 tcsh: kills all tcsh shell processes
• Ch. 4