Pst! Hey, come here. I have LSD 😎
Published: 2020-12-14 15:11:55

No, you didn't read it wrong. I'm here to tell you about LSD - how cool it is, how to use it, and how to incorporate some awesomeness in your life. Once you taste it, you'll never be the same anymore!

## LSD? WTF?

[LSD](https://github.com/Peltoche/lsd) is a Rust-powered `ls`-like command to list directories and files in your terminal. It works pretty much like `ls` and can be used as a drop-in replacement, as most of the commonly used options are supported.

The cool thing about LSD is that it improves the file/directory listing experience by cleverly coloring its output, showing some icons beside names, and also providing some interesting customization parameters.

You can just use `lsd` where you would normally use `ls`. You could also alias `ls` to `lsd` and continue to use it as you normally would:

```sh
alias ls="lsd"
```

> _Note: `ls` contains far more options than LSD, and probably should be used when writing shell scripts. Otherwise, for daily work/routine commands, LSD should be safe enough._

## My experience with LSD

I've been using LSD for some days now and the experience is good. I feel the file icons and the relative dates help me a lot to find the exact file I'm looking for when I `ls` somewhere.

Here's my `~/.zshrc` alias:

```sh
alias ls="lsd --date=relative --group-dirs=first --size=short"
```

I also wrapped this alias into a `which` expression that checks if I have the `lsd` binary available in my `$PATH`, to avoid errors when using my `.zshrc` in environments where LSD is not installed/available. So my `alias` became like this:

```sh
# https://github.com/Peltoche/lsd
which lsd > /dev/null 2>&1 && alias ls="lsd --date=relative --group-dirs=first --size=short"
```

## Using LSD

Using LSD is literally the same as using `ls`. I'll avoid placing installation instructions here as it might become outdated.

The LSD home page is https://github.com/Peltoche/lsd

As of today, the latest LSD version is 0.19.0. You can check all its optional parameters through `--help`:

```
$ lsd --help
lsd 0.19.0
An ls command with a lot of pretty colors and some other stuff.

USAGE:
    lsd [FLAGS] [OPTIONS] [--] [FILE]...

FLAGS:
    -a, --all               Do not ignore entries starting with .
    -A, --almost-all        Do not list implied . and ..
        --classic           Enable classic mode (no colors or icons)
    -L, --dereference       When showing file information for a symbolic link, show information for the file the link references rather than for the link itself
    -d, --directory-only    Display directories themselves, and not their contents (recursively when used with --tree)
    -X, --extensionsort     Sort by file extension
        --help              Prints help information
    -h, --human-readable    For ls compatibility purposes ONLY, currently set by default
        --ignore-config     Ignore the configuration file
    -F, --classify          Append indicator (one of */=>@|) at the end of the file names
    -i, --inode             Display the index number of each file
    -l, --long              Display extended file metadata as a table
        --no-symlink        Do not display symlink target
    -1, --oneline           Display one entry per line
    -R, --recursive         Recurse into directories
    -r, --reverse           Reverse the order of the sort
    -S, --sizesort          Sort by size
    -t, --timesort          Sort by time modified
        --total-size        Display the total size of directories
        --tree              Recurse into directories and present the result as a tree
    -V, --version           Prints version information
    -v, --versionsort       Natural sort of (version) numbers within text

OPTIONS:
        --blocks <blocks>...            Specify the blocks that will be displayed and in what order [possible values: permission, user, group, size, date, name, inode]
        --color <color>...              When to use terminal colours [default: auto]  [possible values: always, auto, never]
        --date <date>...                How to display date [possible values: date, relative, +date-time-format] [default: date]
        --depth <num>...                Stop recursing into directories after reaching specified depth
        --group-dirs <group-dirs>...    Sort the directories then the files [default: none]  [possible values: none, first, last]
        --icon <icon>...                When to print the icons [default: auto]  [possible values: always, auto, never]
        --icon-theme <icon-theme>...    Whether to use fancy or unicode icons [default: fancy]  [possible values: fancy, unicode]
    -I, --ignore-glob <pattern>...      Do not display files/directories with names matching the glob pattern(s). More than one can be specified by repeating the argument [default: ]
        --size <size>...                How to display size [default: default]  [possible values: default, short, bytes]
        --sort <WORD>...                sort by WORD instead of name [possible values: size, time, version, extension]

ARGS:
    <FILE>...     [default: .]
```

If you use LSD and enjoy it, let me know how awesome it is for you in the comments below. 😉