ls-go

command module
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 17, 2023 License: MIT Imports: 19 Imported by: 0

README

ls-go

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:

show basic usage

Of course, you can use an alias to save some typing and get your favorite options:

show fancier 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.

show with nerd font icons

Light Background Theme

Has an option for white backgrounds.

show on white background

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

Warp Terminal logo

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.

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL