blob: 7d21ef2255e9be9ea7b3ef450d53c29f49e7d081 (
plain)
1
2
3
4
5
6
7
8
9
10
11
|
#!/usr/bin/env sh
# 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. Depends on: sed, ed, rlwrap, grep
[ "$1" = "$HOME" ] && echo $HOME && exit; fl="$HOME/.local/share/dir_lst";
[ ! -f "$fl" ] && touch "$fl"; [ "$2" = '!' ] && echo $1 && exit || \
ln=`grep -n "$1" "$fl" | head -n1 | cut -d: -f1`; if [ -n "$1" ]; then
if [ -n "$ln" ]; then printf "$ln m0\n1p\nw\n" | ed -s "$fl" || echo \?;
else l=$(realpath "$1"); while [ ! -d "$l" ]; do echo \?;
l="$(rlwrap -P$PWD/ -co cat -)"; done; printf "0i\n$l\n.\nw\n" |\
ed -s "$fl"; sed -i '43,$d' "$fl"; fi; else printf "2 m0\nw\n" | ed -s "$fl"; fi
|