pls is a better ls for developers, pronounced /pliːz/ as in 'please'

Overview

pls on PyPI Python versions GPL-3.0

Demo of `pls`

pls is a better ls for developers. The "p" stands for ("pro" as in "professional"/"programmer") or "prettier".

It works in a manner similar to ls, in that it lists directories and files in a given directory, but it adds many more developer-friendly features.

Note that pls is not a replacement for ls. ls is a tried, tested and trusted tool with lots of features. pls, on the other hand, is a simple tool for people who just want to see the contents of their directories.

Features

pls provides many features over ls command. pls can:

  • show Nerd Font icons or emoji next to files and directories making it easier to grep the output
  • colour output to elevate important files or dim unimportant ones
  • use a more nuanced approach to hidden files than plainly hiding files with a leading dot .
  • group directories and shows them all before files
  • ignore leading dots . and normalise case when sorting files
  • align files names by first character
  • cascade formatting rule specs by based on specificity levels
  • read .pls.yml files from the directory to augment its configuration
  • show more details like permissions, owner and size in columns
  • run quite fast, thanks to multiprocessing

The icon, color and most behaviour in the application can be configured using plain-text YAML files for the pros who prefer to tweak their tools.

Upcoming features

In the future pls will be able to

  • generate visibility rules by parsing .gitignore
  • add MIME type as another method for matching files to specs
  • use complete path based matching for files
  • link files and hide derived files behind the main ones
  • generate tree-like output for subdirectories

If you want to help implement any of these features, feel free to submit a PR. pls is free and open-source software.

Comparison with similar tools

There are a lot of ls replacements. Here are some of the most popular ones.

pls aims to stand out because of some very specific choices.

  • Does not intend to replace ls. pls, as a command, is just as easy to type.
  • Targets a more tech-savvy audience in its features.
  • Intelligently maps file type. Just comparing the file extension would be too generic.
  • Meticulously chosen iconography for the appreciating eyes.
  • Highly customisable at a project level using a simple .pls.yml file.
  • Built in a friendly language, Python. This makes it easy to fork and change it yourself.

Installation

To get the best of pls, install a Nerd Font on your computer. Nerd Fonts come patched with many icons from different popular icon sets. If you're a "pro" (the target audience for pls) these fonts are basically a must.

pls is a pure-Python codebase and is deployed to PyPI. So installing it on any system with a supported Python version is quite straightforward.

$ python3 -m pip install --user pls

There are no native packages yet.

Usage

pls has a very simple API with easy to memorise flags. There are no mandatory arguments. Just run pls anywhere on your disk.

$ pls

There are a few optional arguments and flags you can use to tweak the behaviour. You can see the complete list of arguments and their description by passing the --help or -h flags.

$ pls --help

Directory

The only positional argument is a directory. Pass this to see the contents of a different folder rather than the current working directory.

$ pls path/to/somewhere/else

Icons

pls supports many icons for popular languages out of the box and will show icons by default. If you don't have a Nerd Font (why?), you can switch to emoji icons using --icons emoji or -iemoji. Be warned they are quite bad. If you are a sad person, you turn icons off using --icon none or -inone.

Note: The built-in icon configuration is intentionally lean. The whole idea is for pls to be customisable by you.

Filtering

You can choose to hide files or folders from the output using --no-files and --no-dirs respectively. Passing both will lead to a blank output. On the other hand if you want to see files and directories that pls would not show otherwise, pass --all.

Sorting

By default pls will place all directories first, followed by files with both sorted alphabetically from A to Z. You can prevent folders from being first by passing the --no-dirs-first flag. You can change the sort to go from Z to A using --sort desc or -sdesc. Leading dots are ignored during sorting.

Alignment

A lot of code related files start with a leading dot . for no valid reason. pls by default

  • moves their name left by one character to line up the actual alphabets
  • dims their leading dot

If you don't like this, you can set --no-align to turn off all this behaviour in one swoop.

Details

When you need more infomation about your files, pass the --details flag. This expands the list into a table, with

  • permissions
  • owner name
  • size

added to the output. The permissions are presented as rwx triplets. The size is presented in binary compound-units (the ones with the "i" like "*iB"). You can switch to decimal units by passing --units decimal or -udecimal. This flag has no effect unless the --detail flag is passed too.

Owner
Dhruv Bhanushali
Software Engineer • IIT-R '19
Dhruv Bhanushali
A CLI tools to get you started on any project in any language

Any Template A faster easier to Quick start any programming project. Installation pip3 install any-template Features No third party dependencies. Tem

Adwaith Rajesh 2 Jan 11, 2022
Command line tool to automate transforming the effects of one color profile to another, possibly more standard one.

Finished rendering the frames of that animation, and now the colors look washed out and ugly? This terminal program will solve exactly that.

Eric Xue 1 Jan 26, 2022
A helper program to play wordle

A helper program to play wordle

1 Jan 22, 2022
Command line parser for common log format (Nginx default).

Command line parser for common log format (Nginx default).

Lucian Marin 138 Dec 19, 2022
A dec-bin converter uses 2's complement.

2's Complement Dec-Bin Converter A dec-bin converter uses 2's complement. Visit my Medium Post. What is 2's complement? Two's complement is the most c

C.H Jacky 9 Mar 01, 2022
Euporie is a text-based user interface for running and editing Jupyter notebooks

Euporie is a text-based user interface for running and editing Jupyter notebooks

781 Jan 01, 2023
Play videos in the terminal.

Termvideo Play videos in the terminal (stdout). python main.py /path/to/video.mp4 Terminal size: -x output_width, -y output_height. Default autodetect

Patrick 11 Jun 13, 2022
A command line tool to publish ads on ebay-kleinanzeigen.de

kleinanzeigen-bot Feedback and high-quality pull requests are highly welcome! About Installation Usage Development Notes License About kleinanzeigen-b

83 Dec 26, 2022
Todo list console based application. Todo's save to a seperate file.

Todo list console based application. Todo's save to a seperate file.

1 Dec 24, 2021
Doro is a CLI based pomodoro app and countdown timer application built using python.

Doro - CLI based pomodoro app Doro is a CLI based pomodoro app and countdown timer application built using python. Install $ pip install doro Usage Po

Suresh Kumar 14 May 23, 2022
A CLI Spigot plugin manager that adheres to Unix conventions and Python best practices.

Spud A cross-platform, Spigot plugin manager that adheres to the Unix philosophy and Python best practices. Some focuses of the project are: Easy and

Tommy Dougiamas 9 Dec 02, 2022
A simple python script to execute a command when a YubiKey is disconnected

YubiKeyExecute A python script to execute a command when a YubiKey / YubiKeys are disconnected. ‏‏‎ ‎ How to use: 1. Download the latest release and d

6 Mar 12, 2022
Color preview command-line tool written in python

Color preview command-line tool written in python

Arnau 1 Dec 27, 2021
Unpacks things.

$ unp_ unp is a command line tool that can unpack archives easily. It mainly acts as a wrapper around other shell tools that you can find on v

Armin Ronacher 405 Jan 03, 2023
adds flavor of interactive filtering to the traditional pipe concept of UNIX shell

percol __ ____ ___ ______________ / / / __ \/ _ \/ ___/ ___/ __ \/ / / /_/ / __/ / / /__/ /_/ / / / .__

Masafumi Oyamada 3.2k Jan 07, 2023
As easy as /aitch-tee-tee-pie/ 🥧 Modern, user-friendly command-line HTTP client for the API era. JSON support, colors, sessions, downloads, plugins & more. https://twitter.com/httpie

HTTPie: human-friendly CLI HTTP client for the API era HTTPie (pronounced aitch-tee-tee-pie) is a command-line HTTP client. Its goal is to make CLI in

HTTPie 25.4k Dec 30, 2022
Declarative CLIs with argparse and dataclasses

argparse_dataclass Declarative CLIs with argparse and dataclasses. Features Features marked with a ✓ are currently implemented; features marked with a

Mike DePalatis 29 Dec 06, 2022
A powerful, colorful, beautiful command-line-interface for pypi.org

pypi-command-line pypi-command-line is a colorful, powerful, and beautiful command line interface for pypi.org that is actively maintained Detailed Do

Wasi Master 32 Jun 23, 2022
Command line tool for monitoring changes of File entities scoped in a Synapse File View

Synapse Monitoring Provides tools for monitoring and keeping track of File entity changes in Synapse with the use of File Views. Learn more about File

Sage Bionetworks 3 May 28, 2022
🌈 Generate color palettes based on Neovim colorschemes.

Iris Iris is a Neovim plugin that generates a normalized color palette based on your colorscheme. It is named for the goddess Iris of Greek mythology,

N. G. Scheurich 45 Jul 28, 2022