ch08

Document Sample
ch08 Powered By Docstoc
					Linux+ Guide to Linux Certification, Second Edition
Chapter 8 Working with the BASH Shell

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

2

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

3

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

4

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

5

Command Input and Output (continued)

Figure 8-1: The three common file descriptors
Linux+ Guide to Linux Certification, 2e 6

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

7

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

8

Redirection (continued)

Table 8-1: Common redirection examples
Linux+ Guide to Linux Certification, 2e 9

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

10

Pipes (continued)

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

Linux+ Guide to Linux Certification, 2e

11

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

12

Pipes (continued)

Figure 8-3: Piping several commands

Linux+ Guide to Linux Certification, 2e

13

Pipes (continued)

Table 8-2: Common filter commands
Linux+ Guide to Linux Certification, 2e 14

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

15

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 16

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

17

Environment Variables (continued)

Table 8-3: Common BASH environment variables

Linux+ Guide to Linux Certification, 2e

18

Environment Variables (continued)

Table 8-3 (continued): 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

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 21

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 22

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

23

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

24

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

25

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

26

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

27

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

28

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

29

Escape Sequences (continued)

Table 8-4: Common echo escape sequences

Linux+ Guide to Linux Certification, 2e

30

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

31

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

32

Decision Constructs (continued)

Figure 8-4: A sample decision construct
Linux+ Guide to Linux Certification, 2e 33

Decision Constructs (continued)

Figure 8-5: A sample decision construct
Linux+ Guide to Linux Certification, 2e 34

The if Construct
• Control flow of program based on true/false decisions • Syntax:

Linux+ Guide to Linux Certification, 2e

35

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 36

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

37

The if Construct (continued)

Table 8-5: Common test statements
Linux+ Guide to Linux Certification, 2e 38

The if Construct (continued)

Table 8-6: Special operators in test statements

Linux+ Guide to Linux Certification, 2e

39

The case Construct
• Compares value of a variable with several different patterns of text or numbers • Syntax:

Linux+ Guide to Linux Certification, 2e

40

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

41

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

42

The && and || Constructs (continued)
• &&: Second command executed only if first completes successfully • ||: Second command executed only if first fails

Linux+ Guide to Linux Certification, 2e

43

Summary
• Three components are available to commands: Standard Input, Standard Output, and Standard Error • Standard Input is typically user input taken from the keyboard; Standard Output and Standard Error are sent to the terminal screen • You can redirect the Standard Output and Standard Error of a command to a file using redirection symbols
Linux+ Guide to Linux Certification, 2e 44

Summary (continued)
• Use the pipe symbol to redirect the Standard Output from one command to the Standard Input of another • Most variables available to the BASH shell are environment variables that are loaded into memory after login from environment files • You can create your own variables in the BASH shell and export them so that they are available to programs started by the shell

Linux+ Guide to Linux Certification, 2e

45

Summary (continued)
• The UMASK variable and command aliases are special variables that must be set using a certain command • Shell scripts can be used to execute several Linux commands • Decision constructs can be used in shell scripts to execute certain Linux commands based on user input or the results of a certain command

Linux+ Guide to Linux Certification, 2e

46


				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:87
posted:8/2/2009
language:English
pages:46