Difference between revisions of "BASH"

From Script | Spoken-Tutorial
Jump to: navigation, search
(BASH Shell Scripting: Intermediate)
(BASH Shell Scripting: Advance)
 
(42 intermediate revisions by 4 users not shown)
Line 1: Line 1:
'''Bash''' is the shell, or command language interpreter, that will appear in the '''GNU operating system'''.  
+
'''Bash: '''  
 +
Bash is the shell, or command language interpreter, that will appear in the '''GNU operating system'''.  
 
Bash is an sh-compatible shell that incorporates useful features from the Korn shell (ksh) and C shell (csh).  
 
Bash is an sh-compatible shell that incorporates useful features from the Korn shell (ksh) and C shell (csh).  
 
It offers functional improvements over sh for both programming and interactive use.  
 
It offers functional improvements over sh for both programming and interactive use.  
Line 5: Line 6:
 
In addition, most sh scripts can be run by Bash without modification.
 
In addition, most sh scripts can be run by Bash without modification.
 
The improvements offered by Bash include: Command line editing, Unlimited size command history, Job Control, Shell Functions and Aliases, Indexed arrays of unlimited size, Integer arithmetic.
 
The improvements offered by Bash include: Command line editing, Unlimited size command history, Job Control, Shell Functions and Aliases, Indexed arrays of unlimited size, Integer arithmetic.
 +
 +
'''Bash Scripting:'''
 +
In addition to the interactive mode, where the user types one command at a time, with immediate execution and feedback, Bash also has the ability to run an entire script of commands, known as a "Bash shell script". A script might contain just a very simple list of commands or even just a single command or it might contain functions, loops, conditional constructs. In effect, a Bash shell script is a computer program written in the Bash programming language.
 +
 +
Shell scripts are commonly used for many system administration tasks, such as performing disk backups, evaluating system logs, and so on. They are also commonly used as installation scripts for complex programs. They are particularly suited to all of these because they allow complexity without requiring it.
 +
  
 
In this tutorial we would mainly concentrate on how to use the wide variety of commands of Linux commands to handle files, directories, processes etc. These tutorials are created using '''Ubuntu version 12.04''' and above.  Please see the associated text box of individual spoken tutorials on the website to decide the versions of Linux OS to which it is applicable.  
 
In this tutorial we would mainly concentrate on how to use the wide variety of commands of Linux commands to handle files, directories, processes etc. These tutorials are created using '''Ubuntu version 12.04''' and above.  Please see the associated text box of individual spoken tutorials on the website to decide the versions of Linux OS to which it is applicable.  
 
<blockquote style="background-color: lemonchiffon; border: solid thin grey;">
 
<blockquote style="background-color: lemonchiffon; border: solid thin grey;">
The contributors who helped create the outline, transcribe, create the tutorials are - Nancy Varkey, Ashwini Patil, Lavitha Monisha Pereira, Sachin Patil - all from IIT Bombay. The effort has been moderated and coordinated by the Spoken Tutorial team and FOSSEE team, IIT Bombay.
+
The contributors who helped create the outline, transcribe, create the tutorials are - Sachin Patil, Lavitha Monisha Pereira, Ashwini Patil, Nancy Varkey - all from IIT Bombay. The effort has been moderated and coordinated by the''' Spoken Tutorial''' team and '''FOSSEE team''', IIT Bombay.
 
</blockquote>
 
</blockquote>
  
 +
 +
'''Learners''': Polytechnic/UG/PG computer hardware students and system administrators will greatly benefit by learning to automate common tasks using BASH.
  
  
Line 18: Line 27:
 
==BASH Shell Scripting: Basic==
 
==BASH Shell Scripting: Basic==
 
# Introduction to BASH Shell Scripting   
 
# Introduction to BASH Shell Scripting   
#*The bash shell   
+
#*About different types of Shells
 +
#*The Bash shell   
 
#*Bash Shell Script
 
#*Bash Shell Script
 +
#*Write a Bash Shell script and execute it
 
# Basics of Shell Scripting  
 
# Basics of Shell Scripting  
 
#*System variables  
 
#*System variables  
Line 51: Line 62:
 
#*if...then...else...if
 
#*if...then...else...if
 
#*if-else with a password program
 
#*if-else with a password program
# More on If loops
+
#Nested and multilevel if statement in BASH
 
#*Nested if
 
#*Nested if
 
#*Nested if with flowgraph
 
#*Nested if with flowgraph
Line 58: Line 69:
 
#*Multilevel if-then-else with flowgraph
 
#*Multilevel if-then-else with flowgraph
 
#*Multilevel if-else  with String comparison program
 
#*Multilevel if-else  with String comparison program
# Logical Operations
+
# Logical Operators in Bash
 
#*Logical AND syntax  
 
#*Logical AND syntax  
 
#*Logical AND workflow
 
#*Logical AND workflow
Line 66: Line 77:
 
#*Logical NOT syntax
 
#*Logical NOT syntax
 
#*Demonstration of logical NOT with an example(Example used: Checks whether a file exists)
 
#*Demonstration of logical NOT with an example(Example used: Checks whether a file exists)
# Bash comparison- Arithmetic comparison
+
# Arithmetic comparison in BASH
 
#*Arithmetic comparison  
 
#*Arithmetic comparison  
 
#*-eq(equal to)
 
#*-eq(equal to)
Line 76: Line 87:
 
#*-ge(greater than or equal to)
 
#*-ge(greater than or equal to)
 
#*Demonstration of -lt,-gt, -ge and -le with a word count program(Used: `wc -c`)
 
#*Demonstration of -lt,-gt, -ge and -le with a word count program(Used: `wc -c`)
# Bash comparison- String & File attributes
+
# String and File Attributes comparison in BASH
#*String comparison                            
+
#*String comparison
 +
#*String comparison using == operator 
 +
#*String comparison using != operator
 +
#*Simple program of user id to demnostrate string comparison                     
 
#*File attributes comparisons
 
#*File attributes comparisons
# Loops  
+
#*File attributes discussed are -f, -s, -w, -nt, -ot
#*The for loop statement            
+
# Conditional Loops  
 +
#*The for loop statement  
 +
#*for loop with three expression syntax
 +
#*for loop with sequence/range syntax           
 +
#*flow of for loop program
 
#*The while loop statement
 
#*The while loop statement
#More on Loops          
+
#*flow of for loop program
#*Use of : to set infinite while loop  
+
#More on Loops  
#*The until loop statement           
+
#*A loop within a loop
#*The select loop statement         
+
#*Outer for loop      
#*Exit the select loop statement     
+
#*Nested for loop
#*Using the break statement         
+
#*Inner for loop
#*Using the continue statement       
+
#*Syntax of nested for loop
 +
#*Finding files in the directories using nested for loop
 
# Case statement in BASH     
 
# Case statement in BASH     
 
#*Importance of case statement
 
#*Importance of case statement
Line 98: Line 117:
  
 
==BASH Shell Scripting: Intermediate==
 
==BASH Shell Scripting: Intermediate==
# Basics of Functions
+
#Using File Descriptors
 +
#*Introduction on fd                                 
 +
#*Assign the file descriptor (fd) to file for output(exec fd > filename)
 +
#*Explained using an example of 'date' and 'echo'
 +
#*Closing the output fd(exec fd<&-)
 +
#*Explaination on error for the statements defiened after closing fd
 +
#*Assign the file descriptor (fd) to file for input(exec fd < filename)
 +
#*Closing the input file descriptor(exec fd<&-)
 +
#*Explaination on input fd using 'cat'
 +
# Basics of functions
 
#*Writing your first shell function  
 
#*Writing your first shell function  
 
#*Displaying functions                           
 
#*Displaying functions                           
Line 106: Line 134:
 
#*Workflow of function
 
#*Workflow of function
 
#*Demonstration of function(Example used: Machine details program)  
 
#*Demonstration of function(Example used: Machine details program)  
#Local, global and passing Command line arguments in a function     
+
#More on Functions 
 
#*Local variable in a function
 
#*Local variable in a function
 
#*Global variable in a function
 
#*Global variable in a function
Line 113: Line 141:
 
#*Passing command line arguments
 
#*Passing command line arguments
 
#*Demonstration of passing command line arguments by an example(Example used: Displaying simple message)
 
#*Demonstration of passing command line arguments by an example(Example used: Displaying simple message)
#Arrays and returning values in a function
+
#Arrays & functions
#*Arrays in function
+
#*Arrays & functions
 
#*Usability of array by different function call
 
#*Usability of array by different function call
#*Array example        
+
#*Array example
#*Returning from a function      
+
#*Use of return in a function
#*Source command                 
+
#*Use of exit in a function
#*Recursive function             
+
#*Illustration of return and exit by an example
#*Putting functions in background
+
#*Workflow of functions having return and exit     
# Redirections (error handling)
+
#Advance topics in a function     
#*Input and Output                                   
+
#*Source command
#*Standard input                                     
+
#*Source command usage example
#*Standard output                                   
+
#*Brief description on background function               
#*Standard error                                     
+
#*Illustration of bg function
#*Redirection of both standard error and output     
+
#*Use of Jobs command to find job number and PID
#*Appending redirected output                       
+
#Recursive function
#*Empty file creation                               
+
#*Recursive function meaning and uses
#*Here documents                                     
+
#*Illustration of recursive function(Example used: Factorial of a number)
#*Here strings                                       
+
#*Debugging of bash script(bash -x filename)
#*Assigns the file descriptor (fd) to file for output
+
#*Work flow of recursive function with the help of flowchart           
#*Assigns the file descriptor (fd) to file for input 
+
# Basics of Redirection (error handling)  
#*Closes the file descriptor (fd)                              
+
#*Input and Output in bash 
# Pipes and filters
+
#*Redirection definition
#*Linking Commands                   
+
#*file descriptors(FD)                             
#*Multiple commands                   
+
#*Standard input
#*Putting jobs in background         
+
#*Input redirection explained with an example of sorting                                   
#*Pipes                               
+
#*Standard output 
#*How to use pipes to connect programs
+
#*Output redirection explained with an example of ls                                 
#*Input redirection in pipes         
+
#*Standard error
#*Output redirection in pipes         
+
#*Error redirection explained with an example of rm
#*Why use pipes                       
+
#More on Redirection                                      
#*Filters
+
#*Redirection of both standard error and output using 'command &>filename' 
 
+
#*Redirection of both standard error and output using 'command >/dev/null 2>&1'
==BASH Shell Scripting: Advance==
+
#*Explanation on /dev/null
# Signals, process and traps
+
#*Appending redirected output using '>>' 
#*Signals                                                 
+
#'Here' document and 'Here' string                                                 
#*What is a Process?                                       
+
#*Here document   
#*How to view Processes                                      
+
#*Illustration of Here document with 'wc -w'
#*Sending signal to Processes                             
+
#*Here string 
#*Terminating Processes                                   
+
#*Illustration of Here string with 'wc -w'
#*Shell signal values                                     
+
#*The trap statement                                       
+
#*How to clear trap                                       
+
#*Include trap statements in a script                     
+
#*Use the trap statement to catch signals and handle errors
+
#*What is a Subshell?                                     
+
#*Compound command                                         
+
#*Exec command
+
# Making you shell script interactive (using dialog box)
+
#*Menu driven scripts                         
+
#*Getting information about your system       
+
#*Bash display dialog boxes                   
+
#*Dialog customisation with configuration file
+
#*A yes/no dialog box                         
+
#*An input dialog box                         
+
#*A password box                             
+
#*A menu box                                 
+
#*A progress bar (gauge box)                 
+
#*The form dialog for input
+

Latest revision as of 14:54, 9 October 2020

Bash: Bash is the shell, or command language interpreter, that will appear in the GNU operating system. Bash is an sh-compatible shell that incorporates useful features from the Korn shell (ksh) and C shell (csh). It offers functional improvements over sh for both programming and interactive use.

In addition, most sh scripts can be run by Bash without modification. The improvements offered by Bash include: Command line editing, Unlimited size command history, Job Control, Shell Functions and Aliases, Indexed arrays of unlimited size, Integer arithmetic.

Bash Scripting: In addition to the interactive mode, where the user types one command at a time, with immediate execution and feedback, Bash also has the ability to run an entire script of commands, known as a "Bash shell script". A script might contain just a very simple list of commands or even just a single command or it might contain functions, loops, conditional constructs. In effect, a Bash shell script is a computer program written in the Bash programming language.

Shell scripts are commonly used for many system administration tasks, such as performing disk backups, evaluating system logs, and so on. They are also commonly used as installation scripts for complex programs. They are particularly suited to all of these because they allow complexity without requiring it.


In this tutorial we would mainly concentrate on how to use the wide variety of commands of Linux commands to handle files, directories, processes etc. These tutorials are created using Ubuntu version 12.04 and above. Please see the associated text box of individual spoken tutorials on the website to decide the versions of Linux OS to which it is applicable.

The contributors who helped create the outline, transcribe, create the tutorials are - Sachin Patil, Lavitha Monisha Pereira, Ashwini Patil, Nancy Varkey - all from IIT Bombay. The effort has been moderated and coordinated by the Spoken Tutorial team and FOSSEE team, IIT Bombay.


Learners: Polytechnic/UG/PG computer hardware students and system administrators will greatly benefit by learning to automate common tasks using BASH.



BASH Shell Scripting: Basic

  1. Introduction to BASH Shell Scripting
    • About different types of Shells
    • The Bash shell
    • Bash Shell Script
    • Write a Bash Shell script and execute it
  2. Basics of Shell Scripting
    • System variables
    • User defined variables
    • Accepting user input via keyboard
  3. Command Line arguments and quoting
    • Command Line arguments
    • Single quote
    • Double quote
    • Backslash
  4. Globbing and export statements
    • Globbing
    • The export statement
  5. Array Operations in BASH
    • Declaring an Array and Assigning values
    • Initializing an Array during declaration
    • To find length of Bash Array and length of nth element
    • To print whole Bash Array
    • Shell script to illustrate the concepts
  6. More on Arrays
    • Extraction of Array elements
    • Search and replace in an Array element
    • To Add an element to an Array
    • To remove an Element from an Array
    • Shell script to illustrate the concepts
  7. Conditional execution
    • Test
    • Syntax of test
    • if...then
    • Bash script example for if...then
    • if...then...else...if
    • if-else with a password program
  8. Nested and multilevel if statement in BASH
    • Nested if
    • Nested if with flowgraph
    • Nested If-else with Name and Password verification program
    • Multilevel if-then-else
    • Multilevel if-then-else with flowgraph
    • Multilevel if-else with String comparison program
  9. Logical Operators in Bash
    • Logical AND syntax
    • Logical AND workflow
    • Logical OR
    • Logical OR workflow
    • Logical OR and AND with string comparison program
    • Logical NOT syntax
    • Demonstration of logical NOT with an example(Example used: Checks whether a file exists)
  10. Arithmetic comparison in BASH
    • Arithmetic comparison
    • -eq(equal to)
    • -ne(not equal to)
    • Demonstration of -eq and -ne with a word count program(Used: `wc -w`)
    • -lt(lesser than)
    • -le(lesser than or equal to)
    • -gt(greater than)
    • -ge(greater than or equal to)
    • Demonstration of -lt,-gt, -ge and -le with a word count program(Used: `wc -c`)
  11. String and File Attributes comparison in BASH
    • String comparison
    • String comparison using == operator
    • String comparison using != operator
    • Simple program of user id to demnostrate string comparison
    • File attributes comparisons
    • File attributes discussed are -f, -s, -w, -nt, -ot
  12. Conditional Loops
    • The for loop statement
    • for loop with three expression syntax
    • for loop with sequence/range syntax
    • flow of for loop program
    • The while loop statement
    • flow of for loop program
  13. More on Loops
    • A loop within a loop
    • Outer for loop
    • Nested for loop
    • Inner for loop
    • Syntax of nested for loop
    • Finding files in the directories using nested for loop
  14. Case statement in BASH
    • Importance of case statement
    • Syntax of case(With both single and multiple options)
    • Work-flow of case statement
    • Creating menus using case
    • Case statement example
    • Illustration of case statement with simple test for checking disk space

BASH Shell Scripting: Intermediate

  1. Using File Descriptors
    • Introduction on fd
    • Assign the file descriptor (fd) to file for output(exec fd > filename)
    • Explained using an example of 'date' and 'echo'
    • Closing the output fd(exec fd<&-)
    • Explaination on error for the statements defiened after closing fd
    • Assign the file descriptor (fd) to file for input(exec fd < filename)
    • Closing the input file descriptor(exec fd<&-)
    • Explaination on input fd using 'cat'
  2. Basics of functions
    • Writing your first shell function
    • Displaying functions
    • Writing functions
    • Function defintion
    • Calling functions
    • Workflow of function
    • Demonstration of function(Example used: Machine details program)
  3. More on Functions
    • Local variable in a function
    • Global variable in a function
    • Scope of local and global variables
    • Demonstration of local and global variable by an example(Example used: Displaying complete name)
    • Passing command line arguments
    • Demonstration of passing command line arguments by an example(Example used: Displaying simple message)
  4. Arrays & functions
    • Arrays & functions
    • Usability of array by different function call
    • Array example
    • Use of return in a function
    • Use of exit in a function
    • Illustration of return and exit by an example
    • Workflow of functions having return and exit
  5. Advance topics in a function
    • Source command
    • Source command usage example
    • Brief description on background function
    • Illustration of bg function
    • Use of Jobs command to find job number and PID
  6. Recursive function
    • Recursive function meaning and uses
    • Illustration of recursive function(Example used: Factorial of a number)
    • Debugging of bash script(bash -x filename)
    • Work flow of recursive function with the help of flowchart
  7. Basics of Redirection (error handling)
    • Input and Output in bash
    • Redirection definition
    • file descriptors(FD)
    • Standard input
    • Input redirection explained with an example of sorting
    • Standard output
    • Output redirection explained with an example of ls
    • Standard error
    • Error redirection explained with an example of rm
  8. More on Redirection
    • Redirection of both standard error and output using 'command &>filename'
    • Redirection of both standard error and output using 'command >/dev/null 2>&1'
    • Explanation on /dev/null
    • Appending redirected output using '>>'
  9. 'Here' document and 'Here' string
    • Here document
    • Illustration of Here document with 'wc -w'
    • Here string
    • Illustration of Here string with 'wc -w'

Contributors and Content Editors

Ashwini, Lavitha Pereira, Nancyvarkey, PoojaMoolya