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 2
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 3
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 4
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 5
6. Command Input and Output
(continued)
Figure 7-1: The three common file descriptors
Linux+ Guide to Linux Certification, 2e 6
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 7
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 8
9. Redirection (continued)
Table 7-1: Common redirection examples
Linux+ Guide to Linux Certification, 2e 9
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 10
11. Pipes (continued)
Figure 7-2: Piping information from one command to another
Linux+ Guide to Linux Certification, 2e 11
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 12
13. Pipes (continued)
Figure 7-3: Piping several commands
Linux+ Guide to Linux Certification, 2e 13
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 15
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 16
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 17
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 21
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 22
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 23
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 24
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 25
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 26
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 27
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 28
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 29
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 31
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 32
35. The if Construct
Control flow of program based on true/false
decisions
Syntax:
Linux+ Guide to Linux Certification, 2e 35
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 36
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 37
38. The if Construct (continued)
Table 7-5: Common test statements
Linux+ Guide to Linux Certification, 2e 38
39. The if Construct (continued)
Table 7-6: Special operators in test statements
Linux+ Guide to Linux Certification, 2e 39
40. The case Construct
Compares value of a variable with several
different patterns of text or numbers
Syntax:
Linux+ Guide to Linux Certification, 2e 40
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 41
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 42
43. 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
44. 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
45. 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
46. 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