Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/souvikinator/lsx

ls Xtended : A command line utility that lets you navigate through terminal like a pro 😎.
https://github.com/souvikinator/lsx

cd cli go golang hacktoberfest hacktoberfest2021 linux linux-shell ls ls-xtended lsx shell terminal

Last synced: 17 days ago
JSON representation

ls Xtended : A command line utility that lets you navigate through terminal like a pro 😎.

Awesome Lists containing this project

README

        




lsx

Navigate through terminal like a pro 😎




license


codebeat badge

go report card


💻 Demo
⚗️ Install & Update
🐜 Contribution
❗Known Issues

# ❓ Why?

It's a pain to `cd` and `ls` multiple times to reach desired directory in terminal (_this maybe subjective_). **ls-Xtended (lsx)** solves this problem by allowing users to smoothly navigate and search directories on the go with just one command. It also allows to create alias for paths making it easier for users to remember the path to the desired directory.

**It also ranks your directories based on how often you access them and placing them on top of the list to reduce searching and navigation time.**

# 💻 Demo

> **Note**: once you reach the desired destination, use `ctr+c` to exit and stay in the desired destination

## Navigate through terminal and perform search:

- use `/` to trigger search and start typing to search

```bash
lsx
```

## Show hidden files as well

```bash
lsx -a
```

## Set **alias** for directory paths

```bash
lsx set-alias -n somealias -p path/to/be/aliased
```

or

```bash
lsx set-alias --path-name somealias --path path/to/be/aliased
```

## Updating Alias

`set-alias` can also be used to update any existing alias. Let's say alias `abc` already exists for path `a/b/c`. on can update it like so:

```bash
lsx set-alias -n abc -p d/e/f
```

## List **alias** created by user

```bash
lsx alias
```

## Use **alias**

```bash
lsx somealias
```

## Remove existing **alias**

```bash
lsx remove-alias aliasname
```

# ⚗️ Install

> ## **⚠️** make sure:
> - Must have Go installed
> - GOPATH is set and `$GOPATH/bin` is added to [PATH](https://stackoverflow.com/questions/21001387/how-do-i-set-the-gopath-environment-variable-on-ubuntu-what-file-must-i-edit)

### Run following command

```bash
curl https://raw.githubusercontent.com/souvikinator/lsx/master/install.sh | bash
```

and you are ready to go, restart your terminal. Enjoy!

> **Note**: **zsh**, **bash** and **fish** shell users just need to run the installation script and lsx will be ready to use. In case the command is not working add following line at the end of your shell resource file (`.bashrc`, `.zshrc`...):
>
> `source ~/.config/lsx/lsx.sh`
>
> and then restart your terminal

**open an issue if still facing installation problems**

## How to update?

> running the command used for installing updates `lsx`

restart your terminal and you are good to go.

# 🐜 Contribution

You can improve this project by contributing in following ways:

- report bugs
- fix issues
- request features
- asking questions (just open an issue)

and any other way if not mentioned here.

# ❗Known Issues

As of now the installation process is painful and the reason is a program runs as a child process in a terminal so eveything happens withing that child process. When we change the directory from go program the directory changes for that executable or to be specific "for that child process" and not of the shell. Which is why one needs to source a script in their shell resource file (`.zshrc`, `.bashrc`...).

The script contains a bash function as a wrapper around the lsx binary to make the whole `cd` thing work. This is what is prevent lsx to be distributed using some package manager.

If anyone can comeup with something then feel free to open issue.