11 unstable releases (5 breaking)

0.6.0 Oct 5, 2024
0.5.0 Jun 1, 2024
0.4.0 Mar 16, 2024
0.3.0 Dec 30, 2023
0.2.2 Nov 26, 2023

#699 in Command line utilities

MIT/Apache

210KB
5.5K SLoC

nls-ls (nls)

CICD Crates.io

Yet another ls(1) implementation

screenshot

Features

  • Color support for all columns
  • Icons support (through Nerd Fonts)
  • Ignore files set in '.gitignore' files (through '--gitignore' flag)
  • Cross-platform support (Linux, macOS and Windows)

Command-line options

Usage: nls [OPTIONS] [FILE]...

Arguments:
  [FILE]...  Paths to list. List the current directory if no paths are provided

Options:
  -a, --all
          Include hidden entries in listing
  -A, --almost-all
          Like -a, --all but do not list implied . and .. entries
      --allocated-bytes
          Use raw allocated size
  -c
          Use timestamp of when entry status was last changed
  -C
          List entries top-to-bottom in a grid
      --color [<WHEN>]
          Flag to control when to use color for output [possible values: always,
          auto, never]
  -d, --directory
          Do not list directory contents, instead list the directory itself
  -F, --classify
          Append filetype indicator (either */=@|) to entry file names
  -g
          Like -l but do not list the owner column
      --gitignore
          Ignore files set in '.gitignore' files
  -h, --human-readable
          Format size using factors of 1024 like 1.0K 200M 3.0G etc
  -H, --dereference-command-line
          Use target information of symlinks passed as arguments on command line
      --help
          Print help information
  -i, --inode
          List entries along with their file inode number
  -I, --ignore-glob <PATTERN>
          Ignore entries matching glob pattern
      --icons [<WHEN>]
          Flag to control when to display icons [possible values: always, auto,
          never]
      --iec
          Format size using factors of 1024 like 1.0Ki 200Mi 3.0Gi etc
      --ignore-file
          Ignore files set in '.ignore' files
  -k, --kibibytes
          Use 1024 byte blocks for allocated size
  -l
          List entries along with their metadata in long format
  -L, --dereference
          Use target information when listing symlink entries
      --max-depth <NUM>
          Set the max depth to recurse into
      --mode <WORD>
          Set the mode format to be used in long format [possible values:
          native, pwsh, rwx]
  -n, --numeric-uid-gid
          Like -l but list the owner and group names as their respective uid and
          gid
  -o
          Like -l but do not list the group column
  -p
          Append filetype indicator / to directory entry file names
  -r, --reverse
          Reverse sorting order
  -R, --recursive
          Recurse into directories
  -s, --size
          List entries along with their allocated size
  -S
          Sort entries by largest size first
      --si
          Format size using factors of 1000 like 1.0K 200M 3.0G etc
  -t
          Sort entries by most recent timestamp first
      --time <WORD>
          Set timestamp to use for sorting by timestamp or/and listing in long
          format [possible values: accessed, changed, created, modified, atime,
          ctime, btime, mtime]
  -u
          Use timestamp of when entry was last accessed
      --version
          Print version information
  -x
          List entries left-to-right in a grid
  -1
          List one entry per line

Installation

From source

Using Rust's package manager cargo

cargo install nls-ls

A Makefile is also provided to build and install the binary, shell completions and man page

make
sudo make install

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~8–20MB
~290K SLoC