linux+ guide to linux certification, second edition chapter 8 working with the bash shell
Post on 20-Dec-2015
227 Views
Preview:
TRANSCRIPT
Linux+ Guide to Linux Certification, Second Edition
Chapter 8Working with the BASH Shell
Linux+ Guide to Linux Certification, 2e 2
Objectives
• Redirect the input and output of a command
• Identify and manipulate common shell environment variables
• Create and export new shell variables
• Edit environment files to create variables upon shell startup
Linux+ Guide to Linux Certification, 2e 3
Objectives (continued)
• Describe the purpose and nature of shell scripts
• Create and execute basic shell scripts
• Effectively use common decision constructs in shell scripts
Linux+ Guide to Linux Certification, 2e 4
Command Input and Output
• BASH shell responsible for:– Providing user interface – Interpreting commands– Manipulating command input and output
• Provided user specifies certain shell metacharacters with command
• File descriptors: Numeric labels that define command input and command output
Linux+ Guide to Linux Certification, 2e 5
Command Input and Output (continued)
• Standard Input (stdin): File descriptor representing command input
• Standard Output (stdout): File descriptor representing command output
• Standard Error (stderror): File descriptor representing command error messages
Linux+ Guide to Linux Certification, 2e 6
Command Input and Output (continued)
Figure 8-1: The three common file descriptors
Linux+ Guide to Linux Certification, 2e 7
Redirection
• Redirect stdout and stderr from terminal screen to a file – Use “>” shell metacharacter– Can redirect stdout and stderr to separate files
• Use separate filenames for stdout and stderr
Linux+ Guide to Linux Certification, 2e 8
Redirection (continued)
• Redirecting stdin to a file:– Use “<“ shell metacharacter
• tr command: Replace characters in a file sent via stdin
Linux+ Guide to Linux Certification, 2e 9
Redirection (continued)
Table 8-1: Common redirection examples
Linux+ Guide to Linux Certification, 2e 10
Pipes
• Send stdout of one command to another command as stdin
• Pipe: String of commands connected by “|” metacharacters– stdout on left, stdin on right
• Commonly used to reduce amount of information displayed on terminal screen
Linux+ Guide to Linux Certification, 2e 11
Pipes (continued)
Figure 8-2: Piping information from one command to another
Linux+ Guide to Linux Certification, 2e 12
Pipes (continued)
• Can use multiple pipes on command line– Pass information from one command to another over
a series of commands
• filter commands: Commands that can take from stdin and give to stdout– Can be on either side of a pipe
• tee commands: Filter commands that also send information to a file
Linux+ Guide to Linux Certification, 2e 13
Pipes (continued)
Figure 8-3: Piping several commands
Linux+ Guide to Linux Certification, 2e 14
Pipes (continued)
Table 8-2: Common filter commands
Linux+ Guide to Linux Certification, 2e 15
Pipes (continued)
• Can combine redirection and piping– Input redirection must occur at beginning of pipe – Output redirection must occur at end of pipe
• sed filter command: Search for and replace text strings
• awk filter command: Search for text and perform specified action on it
Linux+ Guide to Linux Certification, 2e 16
Shell Variables
• Variable: A reserved portion of memory containing accessible information
• BASH shell has several variables in memory• Environment variables: Contain information that
system and programs access regularly• User-defined variables: Custom variables define by
users• Special variables
– Useful when executing commands and creating new files and directories
Linux+ Guide to Linux Certification, 2e 17
Environment Variables
• set command: Lists environment variables and current values
• echo command: View contents a specified variable– Use $ shell metacharacter
• Changing value of a variable:– Specify variable name followed by equal sign (=) and
new value
Linux+ Guide to Linux Certification, 2e 18
Environment Variables (continued)
Table 8-3: Common BASH environment variables
Linux+ Guide to Linux Certification, 2e 19
Environment Variables (continued)
Table 8-3 (continued): Common BASH environment variables
Linux+ Guide to Linux Certification, 2e 20
Environment Variables (continued)
Table 8-3 (continued): Common BASH environment variables
Linux+ Guide to Linux Certification, 2e 21
User-Defined Variables
• Variable identifier: Name of a variable
• Creating new variables:– Specify variable identifier followed by equal sign and
the new contents
• Features of variable identifiers:– Can contain alphanumeric characters, dash
characters, or underscore characters– Must not start with a number– Typically capitalized to follow convention
Linux+ Guide to Linux Certification, 2e 22
User-Defined Variables (continued)
• Subshell: Shell created by current shell– Most shell commands run in a subshell– Variables created in current shell are not available to
subshells• export command: Exports user-defined variables to
subshells – Ensures that programs started by current shell have
access to variables• env command: Lists all exported environment and
user-defined variables in a shell
Linux+ Guide to Linux Certification, 2e 23
Other Variables
• Not displayed by set or env commands– Perform specialized functions in the shell– e.g., UMASK variable
• alias command: Creates shortcuts to commands– Use unique alias names– Aliases stored in special variables– Can create single alias to multiple commands
• Use ; metacharacter
Linux+ Guide to Linux Certification, 2e 24
Environment Files
• When exiting BASH shell, all stored variables are destroyed
• Environment files: Store variables and values– Executed each time BASH shell is started– Ensures variables are always accessible
Linux+ Guide to Linux Certification, 2e 25
Environment Files (continued)
• Common BASH shell environment files (in order they are executed):– /etc/profile– ~/.bash_profile– ~/.bash_login– ~/.profile
• Hidden environment files allow users to set customized variables
Linux+ Guide to Linux Certification, 2e 26
Environment Files (continued)
• To add a variable, add a line to environment file– Use command line syntax
• Any command can be placed inside any environment file– e.g., alias creation
• .bashrc (BASH run-time configuration): First hidden environment file executed at login
Linux+ Guide to Linux Certification, 2e 27
Shell Scripts
• Shell script: Text file containing a list of commands or constructs for shell to execute– May contain any command that can be entered on
command line
• Hashpling: First line in a shell script– Defines which shell is used to interpret shell script
commands
Linux+ Guide to Linux Certification, 2e 28
Shell Scripts (continued)
• Executing shell scripts with read permission: – Start another BASH shell, specify the shell script as
an argument
• Executing shell scripts with read/write permission:– Executed like any executable program
Linux+ Guide to Linux Certification, 2e 29
Escape Sequences
• Character sequences having special meaning in the echo command– Prefixed by \ character– Must use –e option in echo command
Linux+ Guide to Linux Certification, 2e 30
Escape Sequences (continued)
Table 8-4: Common echo escape sequences
Linux+ Guide to Linux Certification, 2e 31
Reading Standard Input
• Shell scripts may need input from user– Input may be stored in a variable for later use
• read command: Takes user input from stdin– Places in a variable specified by an argument to
read command
Linux+ Guide to Linux Certification, 2e 32
Decision Constructs
• Most common type of construct used in shell scripts
• Alter flow of a program:– Based on whether a command completed
successfully– Based on user input
Linux+ Guide to Linux Certification, 2e 33
Decision Constructs (continued)
Figure 8-4: A sample decision construct
Linux+ Guide to Linux Certification, 2e 34
Decision Constructs (continued)
Figure 8-5: A sample decision construct
Linux+ Guide to Linux Certification, 2e 35
The if Construct
• Control flow of program based on true/false decisions
• Syntax:
Linux+ Guide to Linux Certification, 2e 36
The if Construct (continued)
• Common rules governing if constructs:– elif (else if) and else statements optional– Unlimited number of elif statements– do these commands section may consist of multiple
commands• One per line
– do these commands section typically indented for readability
– End of statement must be “if”– this is true may be a command or test statement
Linux+ Guide to Linux Certification, 2e 37
The if Construct (continued)
• test statement: Used to test a condition– Generates a true/false value– Inside of square brackets ( [ … ] )
• Must have spaces after “[” and before “]”
• Special comparison operators: – –o (OR) – –a (AND)– ! (NOT)
Linux+ Guide to Linux Certification, 2e 38
The if Construct (continued)
Table 8-5: Common test statements
Linux+ Guide to Linux Certification, 2e 39
The if Construct (continued)
Table 8-6: Special operators in test statements
Linux+ Guide to Linux Certification, 2e 40
The case Construct
• Compares value of a variable with several different patterns of text or numbers
• Syntax:
Linux+ Guide to Linux Certification, 2e 41
The case Construct (continued)
• If a match is found, commands to right of pattern are executed
• Must end with esac
Linux+ Guide to Linux Certification, 2e 42
The && and || Constructs
• Time-saving shortcut constructs– When only one decision needs to be made during
execution
• Syntax:– command && command– command || command
Linux+ Guide to Linux Certification, 2e 43
The && and || Constructs (continued)
• &&: Second command executed only if first completes successfully
• ||: Second command executed only if first fails
top related