On Thu, Apr 04, 2013 at 08:51:19PM -0500, Mara Kim wrote:
> The biggest benefit is that it is just plain easier than managing a
> directory of symbolic links on your own. I am extremely lazy.
>
> Here is an example use case. At the end of a work day, I like to bookmark
> the folder I am working in on my cluster with
>
> to -b work
>
> The next day, I can come back in and use
>
> to work
In .bashrc:
declare -A bookmarks
while IFS= read -rd '' mark; do
IFS= read -rd '' dir || break
bookmarks["$mark"]=$dir
done < ~/.bash-bookmarks
mark() {
if [[ ${bookmarks["$1"]} ]]; then
echo "Bookmark already set: $1 -> ${bookmarks["$1"]}" >&2
else
bookmarks["$1"]=$PWD
printf '%s\0' "$1" "$PWD" >> ~/.bash-bookmarks
fi
}
to() {
if [[ ${bookmarks["$1"]} ]]; then
cd "${bookmarks["$1"]}"
else
echo "No such bookmark: $1" >&2
fi
}
If you really insist on using "to -b" instead of "mark" then it'll be a
bit lengthier, as you'll need to add option checking to "to".
Multiple concurrent shells could conceivably write contradictory (or
duplicate) bookmark definitions to the ~/.bash-bookmarks file. In this
implementation, whichever one is written last will be the one that counts
when a new shell reads the file. You might want to clean up duplicates
and contradictions eventually. You might also want to write a function to
remove a bookmark from the file (hint: it'll involve writing the whole new
set of bookmarks to a temp file and then moving it back to the original).
I've taken the liberty of copying [email protected] as I believe that
is a more appropriate list for this discussion.