commit 1563dffba8ad1532133b2f46a79abf45b3d8fd8d
| author | 斟酌 鵬兄 <tgckpg@gmail.com> |
| date | 2014-07-28T02:08:24Z |
| subject | Added go command |
commit 1563dffba8ad1532133b2f46a79abf45b3d8fd8d
Author: 斟酌 鵬兄 <tgckpg@gmail.com>
Date: 2014-07-28T02:08:24Z
Added go command
---
bash/go_command | 140 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 140 insertions(+)
diff --git a/bash/go_command b/bash/go_command
new file mode 100644
index 0000000..75fa883
--- /dev/null
+++ b/bash/go_command
@@ -0,0 +1,140 @@
+#!/bin/bash
+# go command
+
+function go() {
+ ARG1=$1; ARG2=$2; ARG3=$3;
+
+ if [[ -z "$ARG1" ]]; then
+ echo
+ echo "Usage: go [MODE] SITE TARGET_DIR"
+ echo " <up|down> [MODE] TARGET_DIR"
+ echo
+ return 1
+ fi
+
+ NAV=false;
+ case "$ARG1" in
+ p)
+ CC='pushd' ;;
+ c)
+ CC='cd' ;;
+ e)
+ CC='echo' ;;
+ up|down)
+ NAV=true ;;
+ *)
+ CC='cd'
+ ARG3=$ARG2
+ ARG2=$ARG1
+ ;;
+ esac
+
+ if [ $NAV = true ]; then
+ __go_nav $ARG1 $ARG2 $ARG3
+ return 0;
+ fi
+
+ if [[ -f ~/.go_conf ]]; then
+ source ~/.go_conf
+ else
+ echo "Cannot source config file"
+ return 1;
+ fi
+
+ SITE=$(ls $UDEV|grep -m 1 $ARG2)
+ if [[ -z "$SITE" ]]; then
+ echo "No such site: $ARG2"
+ ls $UDEV -1 | sed 's/^/ /g'
+ return 1
+ fi
+
+ if [[ -z "$ARG3" ]]; then
+ $CC $UDEV/$SITE
+ return 0
+ fi
+
+ for LOC in ${LOCS[@]}
+ do
+ LOCATION=$(ls $UDEV/$SITE/$LOC/ 2> /dev/null | grep -m 1 $ARG3)
+ if [[ -n "$LOCATION" ]]; then
+ LOCATION="$LOC/$LOCATION"
+ break;
+ fi
+ done
+
+ if [[ -n "$LOCATION" ]]; then
+ $CC $UDEV/$SITE/$LOCATION/
+ return 0
+ else
+ echo "Location '$ARG3' not found under: $SITE"
+ return 1
+ fi
+
+ return 1
+}
+
+__go_nav() {
+ ARG1=$1; ARG2=$2; ARG3=$3;
+ case "$ARG2" in
+ p)
+ CC='pushd' ;;
+ c|"")
+ CC='cd' ;;
+ e)
+ CC='echo' ;;
+
+ *)
+ CC='cd'
+ ARG3=$ARG2
+ ;;
+ esac
+
+ if [[ "$ARG1" == "up" ]]; then
+ IFS="/" read -a PWDA <<< "$(pwd)"
+
+ MARK=0
+ LISTOF=''
+ for i in "${!PWDA[@]}"
+ do
+ if [[ "${PWDA[$i]}" =~ $ARG3 ]]; then
+ MARK=$i
+ fi
+
+ if [[ -n "${PWDA[$i]}" ]]; then
+ LISTOF="$LISTOF\n ${PWDA[$i]}";
+ fi
+ done
+
+ if [ -z "$ARG3" ]; then
+ MARK=$(( $MARK - 1 ))
+ fi
+
+ if [[ $MARK -eq 0 ]]; then
+ echo "No such token in up stack: $ARG3"
+ echo -e $LISTOF;
+ echo
+ return 1
+ fi
+
+ DIR='/'
+
+ for (( i=1; i<=$MARK; i++ ))
+ do
+ DIR="$DIR${PWDA[$i]}/"
+ done
+
+ else
+ if [ -z "$ARG3" ]; then
+ DIR=$(find . -maxdepth 1 -type d | head -n 2 | tail -n 1)
+ else
+ DIR=$(find . -type d -name '*'$ARG3'*')
+ if [[ -z $DIR ]]; then
+
+ echo "Directory not found: $ARG3"
+ return 1
+ fi
+ fi
+ fi
+
+ $CC $DIR
+}