This document provides an introduction to shell scripting using Bash. It outlines different shell types and their features. It then covers basic Bash scripting concepts like environment variables, file redirection, command substitution and parameters. The document demonstrates basic Bash commands like alias, if/then, loops, functions and find/awk/sed/xargs. It concludes with an overview of vi text editor commands for navigation, editing, splitting windows and setting options.
2. ● Not a linux/unix guide ...
● Talk something basic about programming
shell script ...
○ Basic concepts
○ Basic commands
○ Vi
Outline
3. Shell Scripts
● sh
● bash
● ksh
● csh
● zsh
sh csh ksh bash tcsh zsh rc es
Job control N Y Y Y Y Y N N
Aliases N Y Y Y Y Y N N
Shell functions Y(1) N Y Y N Y Y Y
"Sensible" Input/Output redirection Y N Y Y N Y Y Y
Directory stack N Y Y Y Y Y F F
Command history N Y Y Y Y Y L L
Command line editing N N Y Y Y Y L L
Vi Command line editing N N Y Y Y(3) Y L L
Emacs Command line editing N N Y Y Y Y L L
Rebindable Command line editing N N N Y Y Y L L
User name look up N Y Y Y Y Y L L
Login/Logout watching N N N N Y Y F F
Filename completion N Y(1) Y Y Y Y L L
Username completion N Y(2) Y Y Y Y L L
Hostname completion N Y(2) Y Y Y Y L L
History completion N N N Y Y Y L L
Fully programmable Completion N N N N Y Y N N
Mh Mailbox completion N N N N(4) N(6) N(6) N N
Co Processes N N Y N N Y N N
Builtin artithmetic evaluation N Y Y Y Y Y N N
Can follow symbolic links invisibly N N Y Y Y Y N N
Periodic command execution N N N N Y Y N N
Custom Prompt (easily) N N Y Y Y Y Y Y
Sun Keyboard Hack N N N N N Y N N
Spelling Correction N N N N Y Y N N
Process Substitution N N N Y(2) N Y Y Y
Underlying Syntax sh csh sh sh csh sh rc r
Freely Available N N N(5) Y Y Y Y Y
Checks Mailbox N Y Y Y Y Y F F
Tty Sanity Checking N N N N Y Y N N
Can cope with large argument lists Y N Y Y Y Y Y Y
Has non-interactive startup file N Y Y(7) Y(7) Y Y N N
Has non-login startup file N Y Y(7) Y Y Y N N
Can avoid user startup files N Y N Y N Y Y Y
Can specify startup file N N Y Y N N N N
Low level command redefinition N N N N N N N Y
Has anonymous functions N N N N N N Y Y
List Variables N Y Y N Y Y Y Y
Full signal trap handling Y N Y Y N Y Y Y
File no clobber ability N Y Y Y Y Y N F
Local variables N N Y Y N Y Y Y
Lexically scoped variables N N N N N N N Y
Exceptions N N N N N N N Y
20. if …. then … elseif … fi
export i=5;
if [ $i -gt 5 ] ; then echo $i; fi
if [ $i -eq 5 ] ; then echo $i; fi
if Expression
then
Commands
elif Expression
then
Commands
else
Commands
fi
if (Expression)
then
Commands
elif (Expression)
then
Commands
else
Commands
fi
if [ Expression ]; then
Commands
elif [ Expression ]; then
Commands
else
Commands
fi
21. for / while / until loop
for name in { 1..10 }
do
….
done
for VariableName in List
do
Commands
done
while [Expression]
do
Commands
done
until [ Expression ]
do
Commands
done
27. Nice tool - bash_it
● https://github.com/revans/bash-it
● Install:
○ Check a clone of this repo:
git clone http://github.com/revans/bash-it.git ~/.bash_it
○ Run ~/.bash_it/install.sh
○ Edit your ~/.bash_profile file in order to customize bash-it.