diff --git a/bashmarks.sh b/bashmarks.sh index b77a8c1..29b7135 100644 --- a/bashmarks.sh +++ b/bashmarks.sh @@ -1,28 +1,28 @@ # Copyright (c) 2010, Huy Nguyen, http://www.huyng.com # All rights reserved. -# -# Redistribution and use in source and binary forms, with or without modification, are permitted provided +# +# Redistribution and use in source and binary forms, with or without modification, are permitted provided # that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, this list of conditions +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions # and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the # following disclaimer in the documentation and/or other materials provided with the distribution. # * Neither the name of Huy Nguyen nor the names of contributors -# may be used to endorse or promote products derived from this software without +# may be used to endorse or promote products derived from this software without # specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. -# USAGE: +# USAGE: # s bookmarkname - saves the curr dir as bookmarkname # g bookmarkname - jumps to the that bookmark # g b[TAB] - tab completion is available @@ -33,10 +33,10 @@ # l - list all bookmarks # setup file to store bookmarks -if [ ! -n "$SDIRS" ]; then +if [ -z "$SDIRS" ]; then SDIRS=~/.sdirs fi -touch $SDIRS +\touch $SDIRS RED="0;31m" GREEN="0;33m" @@ -85,32 +85,33 @@ function d { # print out help for the forgetful function check_help { - if [ "$1" = "-h" ] || [ "$1" = "-help" ] || [ "$1" = "--help" ] ; then - echo '' - echo 's - Saves the current directory as "bookmark_name"' - echo 'g - Goes (cd) to the directory associated with "bookmark_name"' - echo 'p - Prints the directory associated with "bookmark_name"' - echo 'd - Deletes the bookmark' - echo 'l - Lists all available bookmarks' - kill -SIGINT $$ - fi + case $1 in + -h|-help|--help) + echo + echo 's - Saves the current directory as "bookmark_name"' + echo 'g - Goes (cd) to the directory associated with "bookmark_name"' + echo 'p - Prints the directory associated with "bookmark_name"' + echo 'd - Deletes the bookmark' + echo 'l - Lists all available bookmarks' + kill -SIGINT $$ ;; + esac } # list bookmarks with dirnam function l { check_help $1 source $SDIRS - + # if color output is not working for you, comment out the line below '\033[1;32m' == "red" - env | sort | awk '/^DIR_.+/{split(substr($0,5),parts,"="); printf("\033[0;33m%-20s\033[0m %s\n", parts[1], parts[2]);}' - + \env | \sort | \awk '/^DIR_.+/{split(substr($0,5),parts,"="); printf("\033[0;33m%-20s\033[0m %s\n", parts[1], parts[2]);}' + # uncomment this line if color output is not working with the line above - # env | grep "^DIR_" | cut -c5- | sort |grep "^.*=" + # \env | \grep "^DIR_" | \cut -c5- | \sort | \grep "^.*=" } # list bookmarks without dirname function _l { source $SDIRS - env | grep "^DIR_" | cut -c5- | sort | grep "^.*=" | cut -f1 -d "=" + \env | \grep "^DIR_" | \cut -c5- | \sort | \grep "^.*=" | \cut -f1 -d "=" } # validate bookmark name @@ -144,14 +145,14 @@ function _purge_line { if [ -s "$1" ]; then # safely create a temp file t=$(mktemp -t bashmarks.XXXXXX) || exit 1 - trap "/bin/rm -f -- '$t'" EXIT + trap "\rm -f -- '$t'" EXIT # purge line sed "/$2/d" "$1" > "$t" - /bin/mv "$t" "$1" + \mv "$t" "$1" # cleanup temp file - /bin/rm -f -- "$t" + \rm -f -- "$t" trap - EXIT fi }