# goto `goto` is a bash utility allowing users to change faster to aliased directories supporting auto-completion :feet: ## How does it work? User registers directory aliases, for example: ```bash goto -r dev /home/iridakos/development ``` and then `cd`s to that directory with: ```bash goto dev ``` ![goto demo gif](https://github.com/iridakos/goto/raw/master/doc/goto.gif) ## goto completion `goto` comes with a nice auto-completion script so that whenever you press the `tab` key after the `goto` command, bash prompts with suggestions of the available aliases: ```bash $ goto bc /etc/bash_completion.d dev /home/iridakos/development rubies /home/iridakos/.rvm/rubies ``` ## Installation Copy the file `goto.bash` somewhere in your filesystem and add a line in your `.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 `.bashrc` file: ```bash source ~/goto.bash ``` ## Usage ### Change to an aliased directory To change to an aliased directory, type: ```bash goto ``` #### Example: ```bash goto dev ``` ### Register an alias To register a directory alias, type: ```bash goto -r ``` or ```bash goto --register ``` #### Example: ```bash goto -r blog /mnt/external/projects/html/blog ``` or ```bash goto --register blog /mnt/external/projects/html/blog ``` #### Notes * `goto` **expands** the directories hence you can easily alias your current directory with: ```bash goto -r last_release . ``` and it will automatically be aliased to the whole path. * Pressing the `tab` key after the alias name, you have the default directory suggestions by bash. ### Unregister an alias To unregister an alias, use: ```bash goto -u ``` or ```bash goto --unregister ``` #### 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: ```bash goto -l ``` or ```bash goto --list ``` ### Expand an alias To expand an alias to its value, use: ```bash goto -x ``` or ```bash goto --expand ``` #### Example ```bash goto -x last_release ``` or ```bash goto --expand last_release ``` ### Cleanup To cleanup the aliases from directories that are no longer accessible in your filesystem, use: ```bash goto -c ``` or ```bash goto --cleanup ``` ### Help To view the tool's help information, use: ```bash goto -h ``` or ```bash goto --help ``` ### Version To view the tool's version, use: ```bash goto -v ``` or ```bash goto --version ``` ## TODO * ~~Test on macOS~~ extensively * Fix `zsh` issues [[#7](https://github.com/iridakos/goto/issues/7), ...] * Write [tests](https://github.com/iridakos/goto/issues/2) ## Contributing 1. Fork it ( https://github.com/iridakos/goto/fork ) 2. Create your feature branch (`git checkout -b my-new-feature`) 3. Commit your changes (`git commit -am 'Add some feature'`) 4. Push to the branch (`git push origin my-new-feature`) 5. Make sure that the script does not have errors or warning on [ShellCheck](https://www.shellcheck.net/) 6. Create a new Pull Request ## License This tool is open source under the [MIT License](https://opensource.org/licenses/MIT) terms.