CSCI 330 THE UNIX SYSTEM Bash shell BASH
CSCI 330 THE UNIX SYSTEM Bash shell
BASH SHELL SPECIFICS Shell login and logout files Shell variables Prompt History IO redirection CSCI 330 - The Unix System 2
INVOKING BASH On the command line: as login shell specified CSCI 330 - The UNIX System % sh % bash in /etc/passwd with file as argument file is sh-script % sh scriptfile 3
STARTUP & SHUTDOWN FILES executed for login shell /etc/bashrc ~/. bashrc executed for non-login shell options: --norc -l ~/. bash_logout CSCI 330 - The Unix System /etc/profile ~/. bash_login ~/. profile don’t run initialization files run as login shell 4
PREDEFINED SHELL VARIABLES 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 CSCI 330 - The Unix System Shell Variable HOSTNAME The current hostname of the system. PATH A list of directories to search of commands. HOME The home directory of the current user. PS 1 The primary prompt (also PS 2, PS 3, PS 4). 5
USER-DEFINED SHELL VARIABLES CSCI 330 - The Unix System 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
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]} ${varname[*]} first word in array 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 Syntax: CSCI 330 - The Unix System export varname(s) declare –x varname(s) 10
VARIABLES COMMANDS To delete both local and environment variables unset varname To prohibit change readonly varname list all shell variables (including exported) set CSCI 330 - The Unix System 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 name offset length CSCI 330 - The Unix System use portion of a variable’s value via: ${name: offset: length} – the name of the variable – beginning position of the value – the number of positions of the value Example: % % SSN="123456789" password=${SSN: 5: 4} echo $password 6789 13
SPECIAL VARIABLE USES ${#variable} CSCI 330 - The Unix System 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
BASH SHELL PROMPT can be set via “PS 1” shell variable CSCI 330 - The UNIX System Example: % PS 1="$USER > " z 036473 > Secondary prompts: PS 2, PS 3, PS 4 15
BASH SHELL PROMPT Example: % PS 1="u@h-!: " ege@turing-22: CSCI 330 - The UNIX System special “PS 1” shell variable settings: w current work directory h hostname u username ! history event number d date t time a ring the “bell” 16
COMMAND HISTORY LIST View or re-issue previously executed commands Size of history can be set via shell variables: HISTSIZE=500 HISTFILESIZE=100 CSCI 330 - The Unix System 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 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” CSCI 330 - The Unix System Command Syntax 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 2> filename Input: < or 0< Combining outputs: 2>&1 Example: % cat hugo > /tmp/one 2>&1 CSCI 330 - The Unix System 20
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: CSCI 330 - The Unix System Backslash () Single quote (‘) Double quote (“) 21
A BACKSLASH () A backslash is also called the escape character It allows you to preserve only the character immediately following it CSCI 330 - The Unix System 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. Double quotes will not protect these literal symbols: $ (dollar sign), ! (history event), and (backslash). Examples: CSCI 330 - The Unix System % 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. 00 24
COMMAND SUBSTITUTION Used to substitute the output of a command in place of the command itself Two forms of command substitution: CSCI 330 - The Unix System $(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 executes the command line Used when normal parsing of the command line is not enough Results in a second round of variable substitution CSCI 330 - The Unix System Same capability as in C-shell 26
- Slides: 26