• contact@easenotes.com
  • Phone: (+91) 9964716807
Bash Notes - Programming language
Views

Bash Notes - Programming language

Loading...

Explore Bash Notes on easenotes for valuable insights into Bash commands and techniques for both professionals and beginners.

Discover Bash Notes on easenotes for insightful guidance on Bash commands and techniques suitable for both beginners and professionals. To excel in Bash scripting, remember these essential tips. Firstly, ensure your scripts are well-structured and annotated for clarity, aiding in both comprehension and collaboration. Secondly, utilize variables to enhance script efficiency and maintenance. Lastly, include error handling in your scripts to preempt and tackle unexpected issues. By integrating these expert Bash notes into your scripting routine, you can enhance your abilities and produce more resilient scripts.

Chapter 1: Getting Started with Bash

Section 1.1: Hello World
Section 1.2: Hello World Using Variables
Section 1.3: Hello World with User Input
Section 1.4: Importance of Quoting in Strings
Section 1.5: Viewing information for Bash built-ins
Section 1.6: Hello World in "Debug" mode
Section 1.7: Handling Named Arguments

Chapter 2: Script shebang
Section 2.1: Env shebang
Section 2.2: Direct shebang
Section 2.3: Other shebangs

Chapter 3: Navigating directories
Section 3.1: Absolute vs relative directories
Section 3.2: Change to the last directory
Section 3.3: Change to the home directory
Section 3.4: Change to the Directory of the Script

Chapter 4: Listing Files
Section 4.1: List Files in a Long Listing Format
Section 4.2: List the Ten Most Recently Modified Files
Section 4.3: List All Files Including Dotfiles
Section 4.4: List Files Without Using ls
Section 4.5: List Files
Section 4.6: List Files in a Tree-Like Format
Section 4.7: List Files Sorted by Size

Chapter 5: Using cat
Section 5.1: Concatenate files
Section 5.2: Printing the Contents of a File
Section 5.3: Write to a file
Section 5.4: Show non printable characters
Section 5.5: Read from standard input
Section 5.6: Display line numbers with output
Section 5.7: Concatenate gzipped files

Chapter 6: Grep
Section 6.1: How to search a file for a pattern

Chapter 7: Aliasing
Section 7.1: Bypass an alias
Section 7.2: Create an Alias
Section 7.3: Remove an alias
Section 7.4: The BASH_ALIASES is an internal bash assoc array
Section 7.5: Expand alias
Section 7.6: List all Aliases

Chapter 8: Jobs and Processes
Section 8.1: Job handling
Section 8.2: Check which process running on specific port
Section 8.3: Disowning background job
Section 8.4: List Current Jobs
Section 8.5: Finding information about a running process
Section 8.6: List all processes

Chapter 9: Redirection
Section 9.1: Redirecting standard output
Section 9.2: Append vs Truncate
Section 9.3: Redirecting both STDOUT and STDERR
Section 9.4: Using named pipes
Section 9.5: Redirection to network addresses
Section 9.6: Print error messages to stderr
Section 9.7: Redirecting multiple commands to the same file
Section 9.8: Redirecting STDIN
Section 9.9: Redirecting STDERR
Section 9.10: STDIN, STDOUT and STDERR explained

Chapter 10: Control Structures
Section 10.1: Conditional execution of command lists
Section 10.2: If statement
Section 10.3: Looping over an array
Section 10.4: Using For Loop to List Iterate Over Numbers
Section 10.5: continue and break
Section 10.6: Loop break
Section 10.7: While Loop
Section 10.8: For Loop with C-style syntax
Section 10.9: Until Loop
Section 10.10: Switch statement with case
Section 10.11: For Loop without a list-of-words parameter

Chapter 11: true, false and : commands
Section 11.1: Infinite Loop
Section 11.2: Function Return
Section 11.3: Code that will always/never be executed

Chapter 12: Arrays
Section 12.1: Array Assignments
Section 12.2: Accessing Array Elements
Section 12.3: Array Modification
Section 12.4: Array Iteration
Section 12.5: Array Length
Section 12.6: Associative Arrays
Section 12.7: Looping through an array
Section 12.8: Destroy, Delete, or Unset an Array
Section 12.9: Array from string
Section 12.10: List of initialized indexes
Section 12.11: Reading an entire file into an array
Section 12.12: Array insert function

Chapter 13: Associative arrays
Section 13.1: Examining assoc arrays

Chapter 14: Functions
Section 14.1: Functions with arguments
Section 14.2: Simple Function
Section 14.3: Handling flags and optional parameters
Section 14.4: Print the function definition
Section 14.5: A function that accepts named parameters
Section 14.6: Return value from a function
Section 14.7: The exit code of a function is the exit code of its last command

Chapter 15: Bash Parameter Expansion
Section 15.1: Modifying the case of alphabetic characters
Section 15.2: Length of parameter
Section 15.3: Replace pattern in string
Section 15.4: Substrings and subarrays
Section 15.5: Delete a pattern from the beginning of a string
Section 15.6: Parameter indirection
Section 15.7: Parameter expansion and filenames
Section 15.8: Default value substitution
Section 15.9: Delete a pattern from the end of a string
Section 15.10: Munging during expansion
Section 15.11: Error if variable is empty or unset

Chapter 16: Copying (cp)
Section 16.1: Copy a single file
Section 16.2: Copy folders

Chapter 17: Find
Section 17.1: Searching for a file by name or extension
Section 17.2: Executing commands against a found file
Section 17.3: Finding file by access / modification time
Section 17.4: Finding files according to size
Section 17.5: Filter the path
Section 17.6: Finding files by type
Section 17.7: Finding files by specific extension

Chapter 18: Using sort
Section 18.1: Sort command output
Section 18.2: Make output unique
Section 18.3: Numeric sort
Section 18.4: Sort by keys

Chapter 19: Sourcing
Section 19.1: Sourcing a file
Section 19.2: Sourcing a virtual environment

Chapter 20: Here documents and here strings
Section 20.1: Execute command with here document
Section 20.2: Indenting here documents
Section 20.3: Create a file
Section 20.4: Here strings
Section 20.5: Run several commands with sudo
Section 20.6: Limit Strings

Chapter 21: Quoting
Section 21.1: Double quotes for variable and command substitution
Section 21.2: Difference between double quote and single quote
Section 21.3: Newlines and control characters
Section 21.4: Quoting literal text

Chapter 22: Conditional Expressions
Section 22.1: File type tests
Section 22.2: String comparison and matching
Section 22.3: Test on exit status of a command
Section 22.4: One liner test
Section 22.5: File comparison
Section 22.6: File access tests
Section 22.7: Numerical comparisons

Chapter 23: Scripting with Parameters
Section 23.1: Multiple Parameter Parsing
Section 23.2: Argument parsing using a for loop
Section 23.3: Wrapper script
Section 23.4: Accessing Parameters
Section 23.5: Split string into an array in Bash

Chapter 24: Bash history substitutions
Section 24.1: Quick Reference
Section 24.2: Repeat previous command with sudo
Section 24.3: Search in the command history by pattern
Section 24.4: Switch to newly created directory with !#:N
Section 24.5: Using !$
Section 24.6: Repeat the previous command with a substitution

Chapter 25: Math
Section 25.1: Math using dc
Section 25.2: Math using bash capabilities
Section 25.3: Math using bc
Section 25.4: Math using expr

Chapter 26: Bash Arithmetic
Section 26.1: Simple arithmetic with (( ))
Section 26.2: Arithmetic command
Section 26.3: Simple arithmetic with expr

Chapter 27: Scoping
Section 27.1: Dynamic scoping in action

Chapter 28: Process substitution
Section 28.1: Compare two files from the web
Section 28.2: Feed a while loop with the output of a command
Section 28.3: Concatenating files
Section 28.4: Stream a file through multiple programs at once
Section 28.5: With paste command
Section 28.6: To avoid usage of a sub-shell

Chapter 29: Programmable completion
Section 29.1: Simple completion using function
Section 29.2: Simple completion for options and filenames

Chapter 30: Customizing PS1
Section 30.1: Colorize and customize terminal prompt
Section 30.2: Show git branch name in terminal prompt
Section 30.3: Show time in terminal prompt
Section 30.4: Show a git branch using PROMPT_COMMAND
Section 30.5: Change PS1 prompt
Section 30.6: Show previous command return status and time

Chapter 31: Brace Expansion
Section 31.1: Modifying filename extension
Section 31.2: Create directories to group files by month and year
Section 31.3: Create a backup of dotfiles
Section 31.4: Use increments
Section 31.5: Using brace expansion to create lists
Section 31.6: Make Multiple Directories with Sub-Directories

Chapter 32: getopts : smart positional-parameter parsing
Section 32.1: pingnmap

Chapter 33: Debugging
Section 33.1: Checking the syntax of a script with "-n"
Section 33.2: Debugging using bashdb
Section 33.3: Debugging a bash script with "-x"

Chapter 34: Pattern matching and regular expressions
Section 34.1: Get captured groups from a regex match against a string
Section 34.2: Behaviour when a glob does not match anything
Section 34.3: Check if a string matches a regular expression
Section 34.4: Regex matching
Section 34.5: The * glob
Section 34.6: The ** glob
Section 34.7: The ? glob
Section 34.8: The [ ] glob
Section 34.9: Matching hidden files
Section 34.10: Case insensitive matching
Section 34.11: Extended globbing

 

Chapter 35: Change shell
Section 35.1: Find the current shell
Section 35.2: List available shells
Section 35.3: Change the shell

Chapter 36: Internal variables
Section 36.1: Bash internal variables at a glance
Section 36.2: $@
Section 36.3: $#
Section 36.4: $HISTSIZE
Section 36.5: $FUNCNAME
Section 36.6: $HOME
Section 36.7: $IFS
Section 36.8: $OLDPWD
Section 36.9: $PWD
Section 36.10: $1 $2 $3 etc..
Section 36.11: $*
Section 36.12: $!
Section 36.13: $?
Section 36.14: $$
Section 36.15: $RANDOM
Section 36.16: $BASHPID
Section 36.17: $BASH_ENV
Section 36.18: $BASH_VERSINFO
Section 36.19: $BASH_VERSION
Section 36.20: $EDITOR
Section 36.21: $HOSTNAME
Section 36.22: $HOSTTYPE
Section 36.23: $MACHTYPE
Section 36.24: $OSTYPE
Section 36.25: $PATH
Section 36.26: $PPID
Section 36.27: $SECONDS
Section 36.28: $SHELLOPTS
Section 36.29: $_
Section 36.30: $GROUPS
Section 36.31: $LINENO
Section 36.32: $SHLVL
Section 36.33: $UID

Chapter 37: Job Control
Section 37.1: List background processes
Section 37.2: Bring a background process to the foreground
Section 37.3: Restart stopped background process
Section 37.4: Run command in background
Section 37.5: Stop a foreground process

Chapter 38: Case statement
Section 38.1: Simple case statement
Section 38.2: Case statement with fall through
Section 38.3: Fall through only if subsequent pattern(s) match

Chapter 39: Read a file (data stream, variable) line-by-line (and/or field-by-field)?
Section 39.1: Looping through a file line by line
Section 39.2: Looping through the output of a command field by field
Section 39.3: Read lines of a file into an array
Section 39.4: Read lines of a string into an array
Section 39.5: Looping through a string line by line
Section 39.6: Looping through the output of a command line by line
Section 39.7: Read a file field by field
Section 39.8: Read a string field by field
Section 39.9: Read fields of a file into an array
Section 39.10: Read fields of a string into an array
Section 39.11: Reads file (/etc/passwd) line by line and field by field

Chapter 40: File execution sequence
Section 40.1: .profile vs .bash_profile (and .bash_login)

Chapter 41: Splitting Files
Section 41.1: Split a file

Chapter 42: File Transfer using scp
Section 42.1: scp transferring file
Section 42.2: scp transferring multiple files
Section 42.3: Downloading file using scp

Chapter 43: Pipelines
Section 43.1: Using |&
Section 43.2: Show all processes paginated
Section 43.3: Modify continuous output of a command

Chapter 44: Managing PATH environment variable
Section 44.1: Add a path to the PATH environment variable
Section 44.2: Remove a path from the PATH environment variable

Chapter 45: Word splitting
Section 45.1: What, when and Why?
Section 45.2: Bad effects of word splitting
Section 45.3: Usefulness of word splitting
Section 45.4: Splitting by separator changes
Section 45.5: Splitting with IFS
Section 45.6: IFS & word splitting

Chapter 46: Avoiding date using printf
Section 46.1: Get the current date
Section 46.2: Set variable to current time

Chapter 47: Using "trap" to react to signals and system events
Section 47.1: Introduction: clean up temporary files
Section 47.2: Catching SIGINT or Ctl+C
Section 47.3: Accumulate a list of trap work to run at exit
Section 47.4: Killing Child Processes on Exit
Section 47.5: react on change of terminals window size

Chapter 48: Chain of commands and operations
Section 48.1: Counting a text pattern occurrence
Section 48.2: transfer root cmd output to user file
Section 48.3: logical chaining of commands with && and ||
Section 48.4: serial chaining of commands with semicolon
Section 48.5: chaining commands with |

Chapter 49: Type of Shells
Section 49.1: Start an interactive shell
Section 49.2: Detect type of shell
Section 49.3: Introduction to dot files

Chapter 50: Color script output (cross-platform)
Section 50.1: color-output.sh

Chapter 51: Co-processes
Section 51.1: Hello World

Chapter 52: Typing variables
Section 52.1: declare weakly typed variables

Chapter 53: Jobs at specific times
Section 53.1: Execute job once at specific time
Section 53.2: Doing jobs at specified times repeatedly using systemd.timer

Chapter 54: Handling the system prompt
Section 54.1: Using the PROMPT_COMMAND environment variable
Section 54.2: Using PS2
Section 54.3: Using PS3
Section 54.4: Using PS4
Section 54.5: Using PS1

Chapter 55: The cut command
Section 55.1: Only one delimiter character
Section 55.2: Repeated delimiters are interpreted as empty fields
Section 55.3: No quoting
Section 55.4: Extracting, not manipulating

Chapter 56: Bash on Windows 10
Section 56.1: Readme

Chapter 57: Cut Command
Section 57.1: Show the first column of a file
Section 57.2: Show columns x to y of a file

Chapter 58: Global and local variables
Section 58.1: Global variables
Section 58.2: Local variables
Section 58.3: Mixing the two together

Chapter 59: CGI Scripts
Section 59.1: Request Method: GET
Section 59.2: Request Method: POST /w JSON

Chapter 60: Select keyword
Section 60.1: Select keyword can be used for getting input argument in a menu format

Chapter 61: When to use eval
Section 61.1: Using Eval
Section 61.2: Using Eval with Getopt

Chapter 62: Networking With Bash
Section 62.1: Networking commands

Chapter 63: Parallel
Section 63.1: Parallelize repetitive tasks on a list of files
Section 63.2: Parallelize STDIN

Chapter 64: Decoding URL
Section 64.1: Simple example
Section 64.2: Using printf to decode a string

Chapter 65: Design Patterns
Section 65.1: The Publish/Subscribe (Pub/Sub) Pattern

Chapter 66: Pitfalls
Section 66.1: Whitespace When Assigning Variables
Section 66.2: Failed commands do not stop script execution
Section 66.3: Missing The Last Line in a File