Advertisement
Guest User

Untitled

a guest
Aug 29th, 2014
230
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.00 KB | None | 0 0
  1. # A function to help with creating directory aliases and providing
  2. # completion for them.
  3. # Taken from here:
  4. # http://blog.caioromao.com/2010/10/10/Custom-directory-completion.html
  5. # Tweaked to work with more than just 'cd'
  6. _make_dir_complete() {
  7. local aliasname=$1
  8. local prgname="__s_${aliasname}__"
  9.  
  10. cd "$3" >/dev/null 2>&1
  11. local dirname=$(pwd -L)
  12. local realpath=$(pwd -P)
  13. cd - >/dev/null 2>&1
  14.  
  15. FUNC="function $prgname() {
  16. local cur len wrkdir;
  17. local IFS=$'\n'
  18. wrkdir="$realpath"
  19. cur=${COMP_WORDS[COMP_CWORD]};
  20. len=$((${#wrkdir} + 2));
  21. COMPREPLY=( $(compgen -S/ -d $wrkdir/$cur| cut -b $len-) );
  22. }"
  23. ALIAS="$aliasname () { $2 "$dirname/$*"; }"
  24.  
  25. eval $FUNC
  26. eval $ALIAS
  27. complete -o nospace -F $prgname $aliasname
  28. }
  29.  
  30. test -e ~/projects &&
  31. _make_dir_complete cdp cd ~/projects &&
  32. _make_dir_complete pdp pushd ~/projects
  33.  
  34. alias re='cd /home/terdon/research/'
  35.  
  36. alias foo='echo /path/to/bar'
  37.  
  38. $ ls `foo`
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement