CSCI 330 T HE UNIX S YSTEM Bash shell. B ASH S HELL S PECIFICS Shell login and logout files Shell...
-
Upload
domenic-hutchinson -
Category
Documents
-
view
216 -
download
2
Transcript of CSCI 330 T HE UNIX S YSTEM Bash shell. B ASH S HELL S PECIFICS Shell login and logout files Shell...
BASH SHELL SPECIFICS
Shell login and logout files Shell variables Prompt History IO redirection
2
CS
CI 330 - T
he Unix S
ystem
INVOKING BASH
On the command line:% sh
% bash as login shell
specified in /etc/passwd with file as argument
file is sh-script% sh scriptfile
3
CS
CI 330 - T
he UN
IX S
ystem
STARTUP & SHUTDOWN FILES /etc/profile ~/.bash_profile ~/.bash_login ~/.profile
/etc/bash.bashrc ~/.bashrc
options: --norc don’t run initialization files -l run as login shell
~/.bash_logout4
CS
CI 330 - T
he Unix S
ystem
executed for login shell
executed for non-login shell
PREDEFINED SHELL VARIABLES
Shell Variable
Description
PWD The most recent current working directory.
OLDPWD The previous working directory.
BASH The full path name used of the bash shell.
RANDOM Generates a random integer between 0 and 32,767
HOSTNAME The current hostname of the system.
PATH A list of directories to search of commands.
HOME The home directory of the current user.
PS1 The primary prompt (also PS2, PS3, PS4).
CS
CI 330 - T
he Unix S
ystem
5
USER-DEFINED SHELL VARIABLES
Syntax: varname=value
Example: rate=7.65
echo “Rate today is: $rate”
use double quotes if the value of a variable contains white spaces
Example: name=“Thomas William Flowers”
6
CS
CI 330 - T
he Unix S
ystem
NUMERIC VARIABLES
Syntax:
let varname=value
can be used for simple arithmetic:
let count=1
let count=$count+20
let count+=1
7
CS
CI 330 - T
he Unix S
ystem
ARRAY VARIABLES
Syntax:
varname=(list of words)
accessed via index:
${varname[index]}
${varname[0]} first word in array${varname[*]} all words in array
8
CS
CI 330 - T
he Unix S
ystem
USING ARRAY VARIABLES
Examples:
% ml=(mary ann bruce linda dara)
% echo ${ml[*]}
mary ann bruce linda dara
% echo ${ml[2]}
bruce
% echo ${#ml}
4
9
CS
CI 330 - T
he UN
IX S
ystem
EXPORTING VARIABLES
Environment variable is created by exporting shell variable
Syntax: export varname(s)
declare –x varname(s)
10
CS
CI 330 - T
he Unix S
ystem
VARIABLES COMMANDS
To delete both local and environment variables
unset varname
To prohibit changereadonly varname
list all shell variables (including exported)set
11
CS
CI 330 - T
he Unix S
ystem
USING “SET” TO CHANGE OPTIONS
“set” is a builtin command of bash “set +o” can be used to change an option
To keep I/O redirection from overwriting a fileset +o noclobber
12
CS
CI 330 - T
he Unix S
ystem
VARIABLE MANIPULATION
use portion of a variable’s value via:${name:offset:length}
name – the name of the variable offset – beginning position of the value length – the number of positions of the
value
Example: % SSN="123456789"
% password=${SSN:5:4}
% echo $password
% 6789
13
CS
CI 330 - T
he Unix S
ystem
SPECIAL VARIABLE USES
${#variable}
number of characters in variable’s value
${variable:-value}
if variable is undefined use “value” instead ${variable:=value}
if variable is undefined use “value” instead, and set variable’s value
${varname:?message}
if variable is undefined display error “message”
14
CS
CI 330 - T
he Unix S
ystem
BASH SHELL PROMPT
can be set via “PS1” shell variable
Example: % PS1="$USER > "
z036473 >
Secondary prompts:PS2, PS3, PS4
15
CS
CI 330 - T
he UN
IX S
ystem
BASH SHELL PROMPT special “PS1” shell variable settings:
\w current work directory\h hostname\u username\! history event number\d date\t time\a ring the “bell”
Example: % PS1="\u@\h-\!: "ege@turing-22: 16
CS
CI 330 - T
he UN
IX S
ystem
COMMAND HISTORY LIST
View or re-issue previously executed commands
Size of history can be set via shell variables:HISTSIZE=500
HISTFILESIZE=100 Command line editing via keys:
UP ARROW: move back one command in history list
DOWN ARROW: move forward one command LEFT and RIGHT ARROW: move into command BACKSPACE and DELETE: Remove information TAB: complete current command or file name
17
CS
CI 330 - T
he Unix S
ystem
I/O REDIRECTION
18
CS
CI 330 - T
he Unix S
ystem
Command Syntax Short Description
cmd > file Send output of cmd to file
cmd >> file Append output of cmd to file
cmd < file Take input from file
cmd << text Read stdin up to a line identical to text a.k.a “here command”
FILE DESCRIPTOR
19
CS
CI 330 - T
he Unix S
ystem
positive integer for every open file process tracks its open files with this
number
0 – standard input1 – standard output2 – standard error output
bash uses file descriptor to refer to a file
REDIRECTION SYNTAX
Output:> or 1> filename 2> filename
Input:< or 0<
Combining outputs:2>&1
Example: % cat hugo > /tmp/one 2>&1
20
CS
CI 330 - T
he Unix S
ystem
QUOTING
Quoting allows you to distinguish between the literal value of a symbol and the symbols used as code
You need a way to distinguish between the literal symbol and the symbol’s use as a metacharacter or wild card characters
To do this you must use of the following symbols: Backslash (\) Single quote (‘) Double quote (“)
21
CS
CI 330 - T
he Unix S
ystem
A BACKSLASH (\)
A backslash is also called the escape character
It allows you to preserve only the character immediately following it
For example: to create a file named “tools>”, enter: % touch tools\>
22
CS
CI 330 - T
he Unix S
ystem
THE SINGLE QUOTE (‘)
A single quote is used to protect the literal meaning of metacharacters. It protects all characters within the single quotes The only character it cannot protect is itself A single quote cannot occur with other single
quotes even if preceded by a backslash Examples:
% echo 'Joe said 'Have fun''
Joe said Have fun
% echo 'Joe said "Have fun"'
Joe said "Have fun"23
CS
CI 330 - T
he Unix S
ystem
A DOUBLE QUOTE (“)
Double quotes protect all symbols and characters within the double quotes.
Double quotes will not protect these literal symbols: $ (dollar sign), ! (history event), and \ (backslash).
Examples:% echo "I've gone fishing'"
I've gone fishing'
% echo 'Jake won $500.00'
Jake won $500.00
% echo "You've" earned '$5.00'
You've earned $5.0024
CS
CI 330 - T
he Unix S
ystem
COMMAND SUBSTITUTION
Used to substitute the output of a command in place of the command itself
Two forms of command substitution:$(command)
`command`
Examples:% echo "User $(whoami) is on $(hostname)"
User ege is on lx
% echo "Today is" `date`
Today is Sun Jul 17 08:06:28 CDT 2007 25
CS
CI 330 - T
he Unix S
ystem