Then I created a little bash f function:
bookmark <bookmark-name>
... that adds such an alias pointing to the current folder to my aliases file, and sources it.The source, if anybody is interested:
bookmark() {
if [[ ! $1 ]]; then
echo "Please provide a bookmark name (will be prepended with 'c.'):";
read name;
else
name=$1;
fi
dir=$(pwd);
echo "alias c.$name='c $dir'" >> ~/.bash_aliases_local
source ~/.bash_aliases_local
}
Very efficient!The reason I use c. rather than cd. is partly because I use an alias "c" all the time instead of "cd", that does all of this:
- cd into the folder
- run ls -ltr to see my last modified files at the bottom near the prompt.
- create an empty like with echo
- run pwd to print out the current folder path.
This was after I ran statistics on my bash history file and realized I constantly running ls -ltr and sometimes pwd in new folders.
c() {
cd "$1";
ls -ltra --color=always | tail -n 25;
echo;
pwd;
}I can just throw in new short-hand bookmarks for whatever I'm working at the moment.
If I happen to override any previous aliases, that doesn't matter much if I already forgot about that one anyways.
Another cool thing: You can check the end of your ~/.bash_aliases_local file to find out what are your most recent bookmarks, and in other words, what are the relevant folders you are using a lot right now.
One can of course also clean up this list of bookmark-aliases from time to time, but I often don't even care about that.
alias cdrs='cd ~/dev/rs`
alias cdgo='cd ~/dev/go`
alias cddev='cd ~/dev'
alias cddl='cd ~/Downloads' hash -d x=/path/to/x
Then you can cd to there with just ~x
And use it in commands like ls ~x/whatever/ ::$pmd::C:\my\directory
For those unfamiliar with AutoHotkey, it has a global keyboard hook that watches for hotstrings like this and expands them to the text after the second pair of colons."$" is a sigil I chose to use for all hotstrings since I didn't use a language that used it and it helped avoid collisions with text that wasn't meant to be a hotstring, "p" was my prefix for pathing hotstrings, and "md" was an abbreviation for the mnemonic I chose for this particular directory, "my directory."
Then I realized z saves you the work of all that by learning which directories you use regularly and letting you switch to them with partial matching on its arguments:
z my dir
No more coming up with mnemonics and editing my hotstrings file when I started new projects; now z handles it.For the GUI (file dialogs etc.), my profile script now includes a command that copies the current directory to the clipboard. I'm happy with that workflow since I pretty much always have a terminal open anyway.
cdd is for the desktop.
[1]: https://github.com/VTimofeenko/monorepo-machine-config/blob/...
I have abbreviations for about 20 directories, which essentially combine "cd" and the directory path in one string, no spaces.
It works because I probably spend about 50-80% of my time in those directories, it's not too much to remember, and nothing can be faster than a one-word command abbreviation to that exact directory.