summaryrefslogtreecommitdiff
path: root/ce
diff options
context:
space:
mode:
Diffstat (limited to 'ce')
-rwxr-xr-xce15
1 files changed, 8 insertions, 7 deletions
diff --git a/ce b/ce
index 49946b1..e777877 100755
--- a/ce
+++ b/ce
@@ -1,13 +1,14 @@
-# Smart directory changer using the power of grep ;)
-# source in a function j() { . ce $*} or some such
#!/bin/bash
+# Smart directory changer using the power of grep ;)
+# source in a function j() { ce $*; cd `head -n 1 ~/.local/share/dir_lst` }
+# or some such
[ "$1" = "$HOME" ] && echo $HOME && exit
-fl="$HOME/.local/share/dir_lst";[ ! -f "$fl" ] && touch "$fl"
-[ "$2" = "!" ] && echo "$1" && exit || \
+fl="$HOME/.local/share/dir_lst"; [ ! -f "$fl" ] && touch "$fl"
+[ "$2" = '!' ] && echo $1 && exit || \
ln=`grep -n "$1" "$fl" | head -n 1 | cut -d : -f 1`
-if [ ! "$1" = "" ]; then if [ ! "$ln" = "" ]; then
-cd `echo -e "$ln m0\n1p\nw"|ed -s "$fl"` ||echo \?; else
+if [ "$1" != "" ]; then if [ "$ln" != "" ]; then
+echo -e "$ln m0\n1p\nw" | ed -s "$fl" || echo \?; else
l=$1; while [ ! -d "$l" ]; do echo \?; read l; done;
-l=`echo "$l" | sed "s|^[^/]|$PWD/&|"`; cd $l
+l=`echo "$l" | sed "s|^[^/]|$PWD/&|"`;
echo -e "0i\n$l\n.\nw" | ed -s "$fl"; sed -i '43,$d' "$fl"
fi; else echo -e "2 m0\nw" | ed -s "$fl"; fi;