# Send stdout to stderr
ll 1>&2
# Send stderr to stdout
ll 2>&1
# Send stdout to null
ll &> /dev/null
# Pipe ls output into grep
ll | grep "\.txt$"
VAR="Moo moo MOO"
echo $VAR
echo VAR is: $VAR
# Evaluate expression inline - $(expr)
echo /backup/apache2-$(date +%Y%m%d).tar.bz2
# Local vars
function foo {
local VAR="Y HELO THAR"
echo $VAR # Y HELO THAR
}
foo
echo $VAR # Moo moo MOO
PWD=`pwd`
FN="/etc/apache2/httpd.conf"
# String length
echo ${#PWD}
# Upper/lower case
echo "${PWD^^}"
echo "${PWD,,}"
# Replace first/all matches
echo "${PWD/dev/dev.old}"
echo "${PWD//dev/dev.old}"
echo "${PWD//\//\\}"
# Remove all matches
echo "${PWD//dev}"
# Remove shortest/longest suffix
echo "${PWD%/*}" # dirname
echo "${PWD%%/*}"
# Remove shortest/longest prefix
echo "${PWD#*/}"
echo "${PWD##*/}" # basename
# Change extension
echo ${FN%.conf}.old.conf
# Slices
echo ${FN:0:5} # /etc/
echo ${FN:5} # apache2/httpd.conf
echo ${FN: -5} # .conf
echo ${FN: -5:2} # .c
NUM=31
DEC=123.4567
# Arithmatic
let TOT=NUM+15 # Ints only, no spaces
let "TOT = NUM + 15"
let NUM+=15
let NUM++
TOT=`expr $NUM + 50`
TOT=`expr $NUM \* 50`
TOT=$(( NUM - 20 ))
TOT=$(( NUM * 50 ))
# Integer/fraction parts
echo ${DEC%.*}
echo ${DEC#*.}
WHO=`whoami`
# Conditionals
if [ "$WHO" = "root" ]; then
echo You are root!
else if [ "$WHO" = "james" ]
echo You are me :)
else
echo Current user: $WHO
fi
# Looping
for i in $(ls); do
echo item: $i
done
for i in $(ls); do echo item: $i; done
for i in `seq 1 10`; do
echo $i
done
for i in `seq 1 10`; do echo $i; done
IDX=0
while [ $IDX -lt 10 ]; do
echo $IDX
let IDX++
done
IDX=0; while [ $IDX -lt 10 ]; do echo $IDX; let IDX++; done
IDX=20
until [ $IDX -lt 10 ]; do
echo $IDX
let IDX--
done
IDX=20; until [ $IDX -lt 10 ]; do echo $IDX; let IDX--; done
function hello {
echo Hello!
}
hello
# Parameters
function addone {
echo $(($1 + 1))
}
addone 8 # 9
function addtwo {
let V=$(addone $1)
echo $(addone $V)
}
addtwo 8 # 10
function trim { local S=$1; echo ${S:1}; }
trim "|foo" # foo
PACKAGES=(clean notify rm)
# One command per item
for pkg in ${PACKAGES[@]}; do echo npm rm --save-dev gulp-$pkg; done
# npm rm --save-dev gulp-clean
# npm rm --save-dev gulp-notify
# npm rm --save-dev gulp-rm
# One argument per item
echo npm rm --save-dev $(for pkg in ${PACKAGES[@]}; do echo gulp-$pkg; done)
# npm rm --save-dev gulp-clean gulp-notify gulp-rm