Bash basics

From Bitpost wiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

DO NOT USE BASH IF YOU HAVE ANOTHER OPTION. Bash is a bucket of snafus.

proper way to exit mid-script

kill -SIGINT $$;

squelch ALL output

noisycommand &>/dev/null

store commands in variables

# NOTE don't put spaces around equals sign!
# NOTE don't use ampersands within command strings, they won't work
# use a blank command if needed, that's fine
mycmd1="command param param"
mycmd2="cmd2 param"
if [ -e /myspecialplace ]
mycmd2=""
fi
mycmd3="cmd3 param"
$mycmd1 && $mycmd2 && $mycmd3

capture output

myout=`program1 param`;
  • Note the difference a single quote makes to output...
$ eval echo "abc   def"
abc def
$ eval 'echo "abc   def"'
abc   def

check for an error

mkdir "$d2"
if [ $? -gt 0 ]; then
   echo "mkdir error, try that again..."
   exit 3
fi

read input from user

echo "Create the subdirectory?  [$d2]"
if read answer; then
    if [ ${answer} = "y" ] || [ ${answer} = "yes" ]; then
        {whatever}
    else
        {whatever}
    fi
fi

grep your code

I use an alias for common params, so just do this:

grep "my[ ]regex" source/code/directory/ --include="*.cpp"

You can also use (and tweak) this helper:

cd src
grepcode blah

Here's the alias:

alias grep='grep -inIEr --color=ALWAYS'

powerful grep options

misc

bash chmod dirs
find /path/to/base/dir -type d -exec chmod g+x {} \;