And I almost always want the full ps output, or I'm searching for a commandline argument rather than the process name, so pgrep is out.
function psg () { [[ -z "$1" ]] && return ; local _first=${1:0:1} ; local _rest=${1:1} ; [[ -z "$_rest" ]] && _rest='[^]]' ; local _com="ps -ef | grep '[$_first]'$_rest" ; eval "$_com" }
ps -ef | grep foo | grep -v grep