Guest User

bashrc

a guest
Mar 13th, 2015
492
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.50 KB | None | 0 0
  1. alias c='clear'
  2. alias ..='cd ../'
  3. alias ~="cd ~/"
  4. alias ic='ping google.com'
  5. alias x='exit'
  6. alias lsd='ls -d */'
  7. alias svnlog='svn log -v --limit 6 | less'
  8. alias fnd='find ./ -name '
  9.  
  10. mkcd() { mkdir "$1" && cd "$1"; }
  11.  
  12. up() {
  13.     #======================================================================
  14.     # Taken from Reddit user sbicknel
  15.     # modified to search by name
  16.     # move up the directory tree
  17.     # usage: up [N]
  18.     #   N is an integer (defaults to 1)
  19.     #
  20.     # silently exits if non-numeric input given
  21.     # translates signed integers to absolute values
  22.     # ignores all but the first parameter
  23.     #
  24.     # exit codes:
  25.     #    0: success
  26.     #    1: invalid input
  27.     #    2: unable to change directory
  28.     #    3: No matching directory found
  29.     #  255: nothing to do
  30.     #======================================================================
  31.  
  32.     declare targetDir="$PWD"        # new working directory starts from the current directory
  33.  
  34.     # convert parameter to an absolute value, if possible, or return error code
  35.     number_re='^[0-9]+$'
  36.     if [[ $1 =~ $number_re ]] ; then
  37.       declare levels="${1:-1}"    # set the number of levels up the directory tree to traverse
  38.       if [[ $levels =~ [^[:digit:]] ]]; then
  39.           return 1
  40.       fi
  41.  
  42.  
  43.       # set targetDir to target directory
  44.       for (( l=1; l<=levels; l++ )); do
  45.  
  46.           # %/* will produce an empty string in first-level directories.  This handles that case
  47.           if [[ -n "${targetDir%/*}" ]]; then
  48.               targetDir="${targetDir%/*}"
  49.           else # set targetDir to / and break out of loop
  50.               targetDir=/
  51.               break
  52.           fi
  53.       done
  54.  
  55.       # if new working directory is different from current directory, change directories
  56.     else
  57.       directory_re=".*/[^/]*$1[^/]*$"
  58.       while ! [[ $targetDir =~ $directory_re ]] ; do
  59.         if [[ -n "${targetDir%/*}" ]]; then
  60.           targetDir="${targetDir%/*}"
  61.         else # Root reached without finding the directory
  62.           pwd
  63.           return 3
  64.         fi
  65.       done
  66.     fi
  67.  
  68.     if [[ "$targetDir" != "$PWD" ]]; then
  69.         cd "$targetDir" || return 2 # if cd fails
  70.     else
  71.         return -1 # nothing to do (exit code = 255)
  72.     fi
  73. }
  74.  
  75. goto() {
  76.   ALIAS_FILE=/path/to/aliases.txt
  77.  
  78.   usage='Usage: goto [-m destination] name'
  79.  
  80.   if [[ $# == 0 ]] ; then
  81.     echo "$usage"
  82.     return 1
  83.   fi
  84.  
  85.   # getopt seemed like overkill
  86.   if [[ $1 == '-m' ]] ; then
  87.     abspath=$(cd $(dirname $2); pwd)/$(basename $2)
  88.  
  89.     if ! [[ -e $abspath ]] ; then
  90.       echo "No such directory: $abspath"
  91.       return 2
  92.     fi
  93.  
  94.     existing_re="^$abspath |$3$"
  95.     _=`grep -E "$existing_re" $ALIAS_FILE`
  96.     # If the alias is already there
  97.     if [[ $? == 0 ]] ; then
  98.       tmpfile=/tmp/goto.tmp
  99.       touch $tmpfile
  100.       grep -v -E "$existing_re" $ALIAS_FILE > tmpfile
  101.       mv $tmpfile $ALIAS_FILE
  102.     fi
  103.  
  104.     echo "$abspath $3" >> $ALIAS_FILE
  105.   else
  106.     re="$1$"
  107.     newdir=`cat $ALIAS_FILE | grep -e $re | awk '{print $1}'`
  108.     if [[ -e $newdir ]] ; then
  109.       cd $newdir
  110.       return 0
  111.     else
  112.       echo "No alias for '$1'."
  113.       return -1
  114.     fi
  115.   fi
  116. }
  117.  
  118. # Directory path shortener
  119. export MYPS='$(echo -n "${PWD/$HOME/"~"}" |
  120. awk -F "/" '"'"'{
  121. if (length($0) > 30) {
  122.  if (NF>4) print $1 "/" $2 "/.../" $(NF-1) "/" $NF;
  123.  else if (NF>3) print $1 "/" $2 "/.../" $NF;
  124.  else print $1 "/.../" $NF;
  125. }
  126. else print $0;}'"'"')'
  127. PS1='$(eval "echo ${MYPS}")$ '
  128. PS1="\[\e[0;31m\]\u:$PS1\[\e[m\]"
Advertisement
Add Comment
Please, Sign In to add comment