Sie sind auf Seite 1von 26

CSCI 330

THE UNIX SYSTEM


Bash shell
BASH SHELL SPECIFICS
 Shell login and logout files
 Shell variables

CSCI 330 - The Unix System


 Prompt

 History

 IO redirection

2
INVOKING BASH
 On the command line:
% sh

CSCI 330 - The UNIX System


% bash
 as login shell
 specified in /etc/passwd
 with file as argument
 file is sh-script
% sh scriptfile

3
STARTUP & SHUTDOWN FILES
 /etc/profile
 ~/.bash_profile executed for login shell
~/.bash_login

CSCI 330 - The Unix System



 ~/.profile

 /etc/bash.bashrc
executed for non-login shell
 ~/.bashrc

 options:
 --norc don’t run initialization files
 -l run as login shell

4
 ~/.bash_logout
PREDEFINED SHELL VARIABLES

Shell Description
Variable
PWD The most recent current working directory.

CSCI 330 - The Unix System


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).

5
USER-DEFINED SHELL VARIABLES
 Syntax:
varname=value

CSCI 330 - The Unix System


Example:
rate=7.65
echo “Rate today is: $rate”

use double quotes if the value of a variable


contains white spaces
Example:
6
name=“Thomas William Flowers”
NUMERIC VARIABLES
 Syntax:

CSCI 330 - The Unix System


let varname=value

 can be used for simple arithmetic:

let count=1
let count=$count+20
let count+=1

7
ARRAY VARIABLES
 Syntax:

CSCI 330 - The Unix System


varname=(list of words)

 accessed via index:

${varname[index]}
${varname[0]} first word in array
${varname[*]} all words in array
8
USING ARRAY VARIABLES
Examples:

CSCI 330 - The UNIX System


% ml=(mary ann bruce linda dara)
% echo ${ml[*]}
mary ann bruce linda dara
% echo ${ml[2]}
bruce
% echo ${#ml}
4

9
EXPORTING VARIABLES
 Environment variable is created by exporting
shell variable

CSCI 330 - The Unix System


 Syntax:
export varname(s)
declare –x varname(s)

10
VARIABLES COMMANDS
 To delete both local and environment variables
unset varname

CSCI 330 - The Unix System


 To prohibit change
readonly varname

 list all shell variables (including exported)


set

11
USING “SET” TO CHANGE OPTIONS
 “set” is a builtin command of bash
 “set +o” can be used to change an option

CSCI 330 - The Unix System


 To keep I/O redirection from overwriting a file
set +o noclobber

12
VARIABLE MANIPULATION

 use portion of a variable’s value via:


${name:offset:length}

CSCI 330 - The Unix System


 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 13
% 6789
SPECIAL VARIABLE USES

 ${#variable}
number of characters in variable’s value

CSCI 330 - The Unix System


 ${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}
14
if variable is undefined display error “message”
BASH SHELL PROMPT
 can be set via “PS1” shell variable

CSCI 330 - The UNIX System


Example:
% PS1="$USER > "
z036473 >

 Secondary prompts:
PS2, PS3, PS4

15
BASH SHELL PROMPT
 special “PS1” shell variable settings:
\w current work directory
\h hostname

CSCI 330 - The UNIX System


\u username
\! history event number
\d date
\t time
\a ring the “bell”

Example:
% PS1="\u@\h-\!: "
ege@turing-22: 16
COMMAND HISTORY LIST
 View or re-issue previously executed commands
 Size of history can be set via shell variables:

CSCI 330 - The Unix System


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
I/O REDIRECTION

Command Syntax Short Description

CSCI 330 - The Unix System


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”
18
FILE DESCRIPTOR
 positive integer for every open file
 process tracks its open files with this number

CSCI 330 - The Unix System


0 – standard input
1 – standard output
2 – standard error output

 bash uses file descriptor to refer to a file

19
REDIRECTION SYNTAX
 Output:
> or 1> filename

CSCI 330 - The Unix System


2> filename
 Input:
< or 0<
 Combining outputs:
2>&1

Example:
% cat hugo > /tmp/one 2>&1
20
QUOTING
 Quoting allows you to distinguish between the
literal value of a symbol and the symbols used as
code

CSCI 330 - The Unix System


 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
A BACKSLASH (\)
 A backslash is also called the escape character
 It allows you to preserve only the character

CSCI 330 - The Unix System


immediately following it

 For example:
to create a file named “tools>”, enter:
% touch tools\>

22
THE SINGLE QUOTE (‘)
 A single quote is used to protect the literal
meaning of metacharacters.

CSCI 330 - The Unix System


 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
A DOUBLE QUOTE (“)
 Double quotes protect all symbols and characters
within the double quotes.

CSCI 330 - The Unix System


 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'
24
You've earned $5.00
COMMAND SUBSTITUTION
 Used to substitute the output of a command in
place of the command itself

CSCI 330 - The Unix System


 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
USING THE “EVAL” COMMAND
 Evaluates a command line,
performs all shell substitutions, and then

CSCI 330 - The Unix System


executes the command line
 Used when normal parsing of the command line
is not enough
 Results in a second round of variable substitution

 Same capability as in C-shell

26

Das könnte Ihnen auch gefallen