460 likes | 596 Views
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
E N D
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
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
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
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
Command Input and Output (continued) Figure 8-1: The three common file descriptors Linux+ Guide to Linux Certification, 2e
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 • Otherwise, use the & • Ex: .$ls –l /etc/host /etc/h >jj 2>&1 Linux+ Guide to Linux Certification, 2e
Redirection (continued) • Redirecting stdin to a file: • Use “<“ shell metacharacter • tr command: Replace characters in a file sent via stdin • tr accepts files not file name so you need to use input redirection • The shell always clears the content of the file specified in the output redirection Linux+ Guide to Linux Certification, 2e
Redirection (continued) Table 8-1: Common redirection examples Linux+ Guide to Linux Certification, 2e
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 (using grep) Linux+ Guide to Linux Certification, 2e
Pipes (continued) Figure 8-2: Piping information from one command to another Linux+ Guide to Linux Certification, 2e
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
Pipes (continued) Figure 8-3: Piping several commands Linux+ Guide to Linux Certification, 2e
Pipes (continued) Table 8-2: Common filter commands Linux+ Guide to Linux Certification, 2e
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 • The tee command send data to stdout and file • Ex: $cat kk |sort | tee new-kk Linux+ Guide to Linux Certification, 2e
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
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
Environment Variables (continued) Table 8-3: Common BASH environment variables Linux+ Guide to Linux Certification, 2e
Environment Variables (continued) Table 8-3 (continued): Common BASH environment variables Linux+ Guide to Linux Certification, 2e
Environment Variables (continued) Table 8-3 (continued): Common BASH environment variables Linux+ Guide to Linux Certification, 2e
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
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
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
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
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
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
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
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/execute permission: • Executed like any executable program Linux+ Guide to Linux Certification, 2e
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
Escape Sequences (continued) Table 8-4: Common echo escape sequences Linux+ Guide to Linux Certification, 2e
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
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
Decision Constructs (continued) Figure 8-4: A sample decision construct Linux+ Guide to Linux Certification, 2e
Decision Constructs (continued) Figure 8-5: A sample decision construct Linux+ Guide to Linux Certification, 2e
The if Construct • Control flow of program based on true/false decisions • Syntax: Linux+ Guide to Linux Certification, 2e
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
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
The if Construct (continued) Table 8-5: Common test statements Linux+ Guide to Linux Certification, 2e
The if Construct (continued) Table 8-6: Special operators in test statements Linux+ Guide to Linux Certification, 2e
The case Construct • Compares value of a variable with several different patterns of text or numbers • Syntax: Linux+ Guide to Linux Certification, 2e
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
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
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
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
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
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