Need help with goto?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

iridakos
698 Stars 51 Forks MIT License 151 Commits 7 Opened issues

Description

Alias and navigate to directories with tab completion in Linux

Services available

!
?

Need anything else?

Contributors list

# 27,375
Ruby
Zsh
aliases
Bash
87 commits
# 116,283
C
golang
vuejs
chromiu...
5 commits
# 194,600
Python
salesfo...
Zsh
aliases
4 commits
# 359,392
Zsh
aliases
Bash
directo...
4 commits
# 385,773
Zsh
aliases
Bash
directo...
3 commits
# 364,837
C++
remote-...
Zsh
aliases
2 commits
# 28,261
Java
JavaFX
jsp
smali
2 commits
# 4,379
Godot
godoten...
gdscrip...
Electro...
2 commits
# 53,809
CSS
HTML
mac
macOS
1 commit
# 369,073
Zsh
aliases
Bash
directo...
1 commit
# 224,325
CSS
osx
Zsh
aliases
1 commit
# 468,293
C++
Zsh
aliases
Bash
1 commit
# 124,084
Haskell
aliases
directo...
Rust
1 commit
# 490,069
Zsh
aliases
Bash
directo...
1 commit
# 492,080
Zsh
aliases
Bash
directo...
1 commit
# 427,224
Zsh
aliases
Bash
directo...
1 commit
# 135,627
PHP
Zsh
aliases
Git
1 commit

goto

A shell utility allowing users to navigate to aliased directories supporting auto-completion :feet:

Generic badge

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

goto 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 
bc /etc/bash_completion.d                     
dev /home/iridakos/development
rubies /home/iridakos/.rvm/rubies

Installation

Via script

Clone the repository and run the install script as super user or root:

bash
git clone https://github.com/iridakos/goto.git
cd goto
sudo ./install

Manually

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.sh

macOS - Homebrew

A formula named

goto
is available for the bash shell in macOS.
bash
brew install goto

Add colored output

echo -e "\$include /etc/inputrc\nset colored-completion-prefix on" >> ~/.inputrc

Note: - you need to restart your shell after installation - you need to have the bash completion feature enabled for bash in macOS (see this issue): - you can install it with

brew install bash-completion
in case you don't have it already

Usage

Change to an aliased directory

To change to an aliased directory, type:

bash
goto 

Example:

goto dev

Register an alias

To register a directory alias, type:

bash
goto -r  
or
bash
goto --register  

Example:

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 the shell.

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

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:

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

Extras

Push before changing directories

To first push the current directory onto the directory stack before changing directories, type:

bash
goto -p 
or
bash
goto --push 

Revert to a pushed directory

To return to a pushed directory, type:

bash
goto -o
or
bash
goto --pop

Notes

This command is equivalent to

popd
, but within the
goto
command.

Troubleshooting

Updating from 1.x to 2.x

From version 2.x and after, the

goto
DB file is located in the
$XDG_CONFIG_HOME
or in the
~/.config
directory under the name
goto
.

If you updated from version 1.x to 2.x or newer, you need to move this file which was previously located at

~/.goto
.

Note that the new file is not hidden, it does not start with a dot

.

zsh

command not found: compdef

In case you get such an error, you need to load the

bashcompinit
. Append this to your
.zshrc
file:
bash
autoload bashcompinit
bashcompinit

TODO

  • ~~Test on macOS~~ extensively
  • Write tests

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
  6. Create a new Pull Request

License

This tool is open source under the MIT License terms.

[Back To Top]

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.