0% found this document useful (0 votes)
11K views26 pages

Bash About

This document discusses the Bash shell used in Unix systems. It covers topics such as invoking Bash, startup and shutdown files, predefined and user-defined shell variables, arrays, exporting variables, command history, I/O redirection, quoting, command substitution, and using the eval command.

Uploaded by

Deepak Malusare
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11K views26 pages

Bash About

This document discusses the Bash shell used in Unix systems. It covers topics such as invoking Bash, startup and shutdown files, predefined and user-defined shell variables, arrays, exporting variables, command history, I/O redirection, quoting, command substitution, and using the eval command.

Uploaded by

Deepak Malusare
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 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

You might also like