A more colorful, user-friendly implementation of ls
written in Go.
You want to be able to glean a lot of information as quickly as possible from ls
.
Colors can help your mind parse the information.
You can configure ls
to color the output a little bit.
Configuring ls
is a hassle though, and the colors are limited.
Instead, you can use ls-go
.
It is highly colored by default.
It has much fewer flags so you can get the behavior you want more easily.
The colors are beautiful and semantic.
A terminal with xterm-256 colors is required.
Features
- Should work on Linux, MacOS, and Windows.
- Outputs beautiful, semantic colors by default.
-
Show paths to symlinks, and explicitly show broken links (
-L
). -
Recurse down subdirectories (
-r
). -
Emojis, if you're into that (
-i
). -
Supports Nerd Fonts (
-n
). -
Dark or light backgrounds (
-I
).
Usage
Basic usage:
Of course, you can use an alias to save some typing and get your favorite options:
Nerd Font Support
ls-go
works with Nerd Fonts.
Simply add --nerd-font
or -n
to get file-specific icons.
This won't work unless you have a Nerd Font installed and selected in your terminal emulator.
Light Background Theme
Has an option for white backgrounds.
usage: ls-go [<flags>] [<paths>...]
Flags:
-h, --help Show context-sensitive help (also try --help-long and --help-man).
-a, --all show hidden files
-b, --bytes include size
-m, --mdate include modification date
-o, --owner include owner and group
-N, --nogroup hide group
-p, --perms include permissions for owner, group, and other
-l, --long include size, date, owner, and permissions
-d, --dirs only show directories
-f, --files only show files
-L, --links show paths for symlinks
-R, --link-rel show symlinks as relative paths if shorter than absolute path
-s, --size sort items by size
-t, --time sort items by time
-k, --kind sort items by extension
-B, --backwards reverse the sort order of --size, --time, or --kind
-S, --stats show statistics
-i, --icons show folder icon before dirs
-n, --nerd-font show nerd font glyphs before file names
-r, --recurse traverse all dirs recursively
-F, --find=FIND filter items with a regexp
-I, --light output colors for light-bachground themes
Args:
[<paths>] the files(s) and/or folder(s) to display
Install
If you have Golang installed:
go install github.com/acarl005/ls-go@latest
On MacOS with Homebrew:
brew install acarl005/homebrew-formulas/ls-go
On Linux with Snap:
sudo snap install ls-go
Or, you can download the latest pre-compiled binary from the releases page.
Credits
Screenshots taken using Warp Terminal.
This is inspired by athityakumar/colorls and monsterkodi/color-ls, ported to Go, with various modifications.
Known Issues
It fails on directories without executable permissions.
The standard /bin/ls
will also fail when reading non-executable directories,
but only with certain options, like ls -l
, ls --color=always
(or ls -G
on MacOS).
This is because file metadata is needed to determine things like colors,
and directories need to be executable to obtain the metadata of the contents.
For example:
# create dir without -x permission
$ mkdir -m 644 test
# add a file
$ sudo touch test/foo
# plain `ls` still works
$ /bin/ls test
foo
# but `ls -l` fails
$ /bin/ls -l test
# and so does ls-go
$ ls-go test
Contributing
Contributions are muchly appreciated! Want to add a glyph for another file type? Did I forget an edge case? Is there another option that would be useful? Submit a PR! You might want to submit an issue first to make sure it's something I'd want to add though.