goto
A shell utility allowing users to navigate to aliased directories supporting auto-completion
How does it work?
User registers directory aliases, for example:
goto -r dev /home/iridakos/developmentand then cds to that directory with:
goto devgoto completion
goto comes with a nice auto-completion script so that whenever you press the tab key after the goto command, bash or zsh prompts with suggestions of the available aliases:
$ goto <tab>
bc /etc/bash_completion.d
dev /home/iridakos/development
rubies /home/iridakos/.rvm/rubiesInstallation
Via script
Clone the repository and run the install script as super user or root:
git clone https://github.com/iridakos/goto.git
cd goto
sudo ./installManually
Copy the file goto.sh somewhere in your filesystem and add a line in your .zshrc or .bashrc to source it.
For example, if you placed the file in your home folder, all you have to do is add the following line to your .zshrc or .bashrc file:
source ~/goto.shmacOS - Homebrew
A formula named goto is available for the bash shell in macOS.
brew install gotoUsage
- Change to an aliased directory
- Register an alias
- Unregister an alias
- List aliases
- Expand an alias
- Cleanup
- Help
- Version
- Extras
- Troubleshooting
Change to an aliased directory
To change to an aliased directory, type:
goto <alias>Example:
goto devRegister an alias
To register a directory alias, type:
goto -r <alias> <directory>or
goto --register <alias> <directory>Example:
goto -r blog /mnt/external/projects/html/blogor
goto --register blog /mnt/external/projects/html/blogNotes
gotoexpands the directories hence you can easily alias your current directory with:
goto -r last_release .and it will automatically be aliased to the whole path.
- Pressing the
tabkey after the alias name, you have the default directory suggestions by the shell.
Unregister an alias
To unregister an alias, use:
goto -u <alias>or
goto --unregister <alias>Example
goto -u last_release
or
goto --unregister last_release
Notes
Pressing the tab key after the command (-u or --unregister), the completion script will prompt you with the list of registered aliases for your convenience.
List aliases
To get the list of your currently registered aliases, use:
goto -lor
goto --listExpand an alias
To expand an alias to its value, use:
goto -x <alias>or
goto --expand <alias>Example
goto -x last_releaseor
goto --expand last_releaseCleanup
To cleanup the aliases from directories that are no longer accessible in your filesystem, use:
goto -cor
goto --cleanupHelp
To view the tool's help information, use:
goto -hor
goto --helpVersion
To view the tool's version, use:
goto -vor
goto --versionExtras
Push before changing directories
To first push the current directory onto the directory stack before changing directories, type:
goto -p <alias>or
goto --push <alias>Revert to a pushed directory
To return to a pushed directory, type:
goto -oor
goto --popNotes
This command is equivalent to popd, but within the goto command.
Troubleshooting
zsh
command not found: compdef
In case you get such an error, you need to load the bashcompinit. Append this to your .zshrc file:
autoload bashcompinit
bashcompinitTODO
Test on macOSextensively- Write tests
Contributing
- Fork it ( https://github.com/iridakos/goto/fork )
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Make sure that the script does not have errors or warning on ShellCheck
- Create a new Pull Request
License
This tool is open source under the MIT License terms.
