Gogo is an impressive way to bookmark directories inside your Linux shell. It allows you to create shortcuts to long and complicated paths in Linux. This way, you don’t have to type or remember long and complicated paths anymore in Linux.
For example, if you have a directory ~/Documents/Phone-Backup/Linux-Docs/Ubuntu/, using gogo, you can create an alias (a shortcut name), for instance Ubuntu
to access it without typing the whole path anymore.
No matter your current working directory, you can move into ~/cd Documents/Phone-Backup/Linux-Docs/Ubuntu/ by simply using the alias Ubuntu
.
In addition, it also allows you to create aliases for connecting directly to directories on remote Linux servers over an ssh connection.
How to Install Gogo in Linux Systems
To install Gogo, first clone the gogo repository from Github and then copy the gogo.py
to any directory in your PATH environmental variable (if you already have the ~/bin/
directory, you can place it here, otherwise create a bin directory).
$ git clone https://github.com/mgoral/gogo.git $ cd gogo/ $ mkdir -p ~/bin #run this if you do not have ~/bin directory $ cp gogo.py ~/bin/
Then add a function from gogo.sh
to your ~/.bashrc
(for Bash) or ~/.zshrc
(for Zsh) file and verify it using the tail command as shown.
$ cat gogo.sh >> ~/.bashrc $ tail ~/.bashrc OR $ cat gogo.sh >> ~/.zshrc
How to Use Gogo in Linux Systems
To start using gogo, you need to log out and log in back to use it. Gogo stores its configuration in ~/.config/gogo/gogo.conf
file (which should be auto-created if it doesn’t exist) and has the following syntax.
# Comments are lines that start from '#' character. default = ~/something alias = /desired/path alias2 = /desired/path with space alias3 = "/this/also/works" zażółć = "unicode/is/also/supported/zażółć gęślą jaźń"
If you run gogo without any arguments, it will go to the directory specified in default; this alias is always available, even if it’s not in the configuration file, and points to the $HOME directory.
To display the current aliases, use the -l
switch. From the following screenshot, you can see that the default points to ~/home/tecmint
which is user tecmint’s home directory on the system.
$ gogo -l
Below is an example of running gogo without any arguments.
$ cd Documents/Phone-Backup/Linux-Docs/ $ gogo $ pwd
To create a shortcut to a long path, move into the directory you want and use the -a
flag to add an alias for that directory in gogo, as shown.
$ cd Documents/Phone-Backup/Linux-Docs/Ubuntu/ $ gogo -a Ubuntu $ gogo $ gogo -l $ gogo -a Ubuntu $ pwd
You can also create aliases for connecting directly to directories on a remote Linux server. To do this, simply add the following lines to a gogo configuration file, which can be accessed using -e
flag, this will use the editor specified in the $EDITOR env variable.
$ gogo -e
One configuration file opens, add the following lines to it.
sshroot = ssh://[email protected]:/bin/bash /root/ sshtdocs = ssh://tecmint@server3 ~/tecmint/docs/
To display the gogo help message, use the -h
option.
$ gogo -h
One notable limitation of gogo is its lack of support for auto-completion – when accessing subdirectories/child directories under an aliased long path.
Gogo github repository: https://github.com/mgoral/gogo
Gogo is a remarkable way that comes in handy, for creating shortcuts to long and complicated paths in Linux. Try it out and share your thoughts about it or ask any questions via the comment form below.
The bulk of what this tool does can be replaced with a shell function that does `
cd $(grep -w ^$1 ~/.config/gogo.conf | cut -f2 -d' ')
`, where`$1`
is the argument supplied to the function.If you’ve already installed fzf (and you really should), then you can get a far better experience than even zsh’s excellent “completion” facilities. I use something like `
cd $(fzf -1 +m -q "$1" < ~/.cache/to)
` (My equivalent of gogo.conf is `~/.cache/to
`).@Sitaram
Looks good, we will test it out. Thanks for sharing.
@Tim
Okay, thanks for letting us know.
This addresses the ugettext error.
https://github.com/openSUSE/scout/issues/16
z / j / jump sounds better to me since you don’t need to create any Bookmark but only visit the folder once.
@Chevdor
Many thanks for sharing info about jump, we will create an article about it soon.
Thanks for this useful utility. I followed the instructions but when I execute gogo I get this:
I am using Archlinux and python 3.6.4
Could be library dependency problem or version mismatch? Any ideas?
@Kamran
You can open up an issue in the Gogo github repository: https://github.com/mgoral/gogo