Transcript
Page 1: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

Linux+ Guide to Linux Certification, Second Edition

Chapter 8Working with the BASH Shell

Page 2: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working 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

Page 3: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

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

Page 4: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

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

Page 5: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

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

Page 6: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

Linux+ Guide to Linux Certification, 2e 6

Command Input and Output (continued)

Figure 8-1: The three common file descriptors

Page 7: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

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

Page 8: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

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

Page 9: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

Linux+ Guide to Linux Certification, 2e 9

Redirection (continued)

Table 8-1: Common redirection examples

Page 10: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

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

Page 11: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

Linux+ Guide to Linux Certification, 2e 11

Pipes (continued)

Figure 8-2: Piping information from one command to another

Page 12: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

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

Page 13: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

Linux+ Guide to Linux Certification, 2e 13

Pipes (continued)

Figure 8-3: Piping several commands

Page 14: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

Linux+ Guide to Linux Certification, 2e 14

Pipes (continued)

Table 8-2: Common filter commands

Page 15: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

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

Page 16: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

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

Page 17: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

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

Page 18: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

Linux+ Guide to Linux Certification, 2e 18

Environment Variables (continued)

Table 8-3: Common BASH environment variables

Page 19: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

Linux+ Guide to Linux Certification, 2e 19

Environment Variables (continued)

Table 8-3 (continued): Common BASH environment variables

Page 20: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

Linux+ Guide to Linux Certification, 2e 20

Environment Variables (continued)

Table 8-3 (continued): Common BASH environment variables

Page 21: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

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

Page 22: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

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

Page 23: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH 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

Page 24: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

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

Page 25: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

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

Page 26: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

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

Page 27: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

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

Page 28: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

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

Page 29: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

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

Page 30: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

Linux+ Guide to Linux Certification, 2e 30

Escape Sequences (continued)

Table 8-4: Common echo escape sequences

Page 31: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

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

Page 32: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

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

Page 33: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

Linux+ Guide to Linux Certification, 2e 33

Decision Constructs (continued)

Figure 8-4: A sample decision construct

Page 34: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

Linux+ Guide to Linux Certification, 2e 34

Decision Constructs (continued)

Figure 8-5: A sample decision construct

Page 35: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

Linux+ Guide to Linux Certification, 2e 35

The if Construct

• Control flow of program based on true/false decisions

• Syntax:

Page 36: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

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

Page 37: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

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)

Page 38: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

Linux+ Guide to Linux Certification, 2e 38

The if Construct (continued)

Table 8-5: Common test statements

Page 39: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

Linux+ Guide to Linux Certification, 2e 39

The if Construct (continued)

Table 8-6: Special operators in test statements

Page 40: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

Linux+ Guide to Linux Certification, 2e 40

The case Construct

• Compares value of a variable with several different patterns of text or numbers

• Syntax:

Page 41: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

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

Page 42: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

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

Page 43: Linux+ Guide to Linux Certification, Second Edition Chapter 8 Working with the BASH Shell

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


Recommended