Last Updated on 2024-09-17 by Clay
Introduction
z
command is something I've wanted to write about for a long time! However, I've been busy with AI training (company work) and model acceleration (personal interest), so I haven't had the time. Let's put it this way, if someone asks me to recommend essential tools for a Linux system, I would undoubtedly place z
in my top ten list.
On a Linux system, we often need to open the terminal to work and interact with the system. One of the most frequently used commands is cd
for navigation. Now, what if there's a tool that lets us quickly navigate to frequently visited directories without typing the full path, just a few initial letters of the folder name? Wouldn't that be amazing?
This is where the z
command comes in handy: it collects the directories we frequently visit and calculates a "weight" for them, allowing us to switch to commonly used directories quickly. It's similar to cd
but more intelligent and efficient.
Download and Installation
First, we can download the z.sh script. This is not for direct execution but rather for sourcing to make it effective.
$ wget https://raw.githubusercontent.com/rupa/z/master/z.sh -O ~/z.sh
$ echo "source ~/z.sh" >> ~/.bashrc
$ source ~/.bashrc
With this setup, every time we open a terminal, the z
command will be automatically enabled.
Usage
The usage of the z
command is very straightforward.
z <partial-folder-name>
For example, if we frequently visit the ~/projects/my_project
directory, we might just need to type:
z my
And we will automatically reach that directory.
Here's an example of my usage:
We can also use the following command to list the recorded directories and their weight scores:
z -l
Output:
28314 /usr
28318 /media/clay
56608 /tmp
56895 /home/clay/Projects
227634 /home/clay/Scripts
299019 /home/clay/Projects/Any-Test
Over time, the z
database might store some directories that no longer exist, essentially tracking emptiness. So we can use:
z -c
To clean up non-existent directories.
Lastly, if you want to know more about any command, you can always check it using z -h
.
Advanced Usage: Setting a Blacklist
Haha, this is a treasured feature: after all, there are always some private files on our computers that we don't want accidentally revealed. If you visit them frequently, z
might mistakenly give them a high weight, so what if during a demo with a client, z
takes you into these folders?
Don't worry, we can use:
z -x /path/to/remove
To remove tracked directories.
You can also set environment variables in ~/.bashrc
to exclude directories from z
's tracking calculation:
export _Z_EXCLUDE_DIRS=("/path/to/exclude1" "/path/to/exclude2")