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
Detect secret in source code, scan your repo for leaks. Find secrets with GitGuardian and prevent leaked credentials. GitGuardian is an automated secrets detection & remediation service.

GitGuardian Shield: protect your secrets with GitGuardian GitGuardian shield (ggshield) is a CLI application that runs in your local environment or in

GitGuardian 1.2k Jan 06, 2023
Create argparse subcommands with decorators.

python-argparse-subdec This is a very simple Python package that allows one to create argparse's subcommands via function decorators. Usage Create a S

Gustavo José de Sousa 7 Oct 21, 2022
dcargs is a tool for generating portable, reusable, and strongly typed CLI interfaces from dataclass definitions.

dcargs is a tool for generating portable, reusable, and strongly typed CLI interfaces from dataclass definitions.

Brent Yi 119 Jan 09, 2023
img-proof (IPA) provides a command line utility to test images in the Public Cloud

overview img-proof (IPA) provides a command line utility to test images in the Public Cloud (AWS, Azure, GCE, etc.). With img-proof you can now test c

13 Jan 07, 2022
Arithmos cipher on CLI based

Arithmos Cipher CLI This is the CLI version of Arithmos Cipher. Install pip inst

LyQuid :3 1 Jan 16, 2022
Helicopter animation in terminal

helicopter-helicopter Helicopter animation in terminal (scroll down for instructions) Why does this exist? It's because of a meme Click for details Se

Wasi Master 7 Mar 14, 2022
A simple python application for running a CI pipeline locally

A simple python application for running a CI pipeline locally This app currently supports GitLab CI scripts

Tom Stowe 0 Jan 11, 2022
A simple python implementation of a reverse shell

llehs A python implementation of a reverse shell. Note for contributors The project is open for contributions and is hacktoberfest registered! llehs u

Archisman Ghosh 2 Jul 05, 2022
Several tools that can be added to your `PATH` to make your life easier.

CK-CLI Tools Several tools that can be added to your PATH to make your life easier. prettypath Prints the $PATH variable in a human-readable way. It a

Christopher Kumm 2 Apr 21, 2022
Terminal epub reader with inline images

nuber Inspired by epy, nuber is an Epub terminal reader with inline images written with Rust and Python using Überzug. Features Display images in term

Moshe Sherman 73 Oct 12, 2022
💻VIEN is a command-line tool for managing Python Virtual Environments.

vien VIEN is a command-line tool for managing Python Virtual Environments. It provides one-line shortcuts for: creating and deleting environments runn

Artёm IG 5 Mar 19, 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
The Prisma Cloud CLI is a command line interface for Prisma Cloud by Palo Alto Networks.

Prisma Cloud CLI The Prisma Cloud CLI is a command line interface for Prisma Cloud by Palo Alto Networks. Support This project has been developed by P

Palo Alto Networks 13 Oct 14, 2022
ghfetch is ai customizable CLI GitHub personal README generator.

ghfetch is ai customizable CLI GitHub personal README generator. Inspired by famous fetch such as screenfetch, neofetch and ufetch, the purpose of this tool is to introduce yourself as if you were a

Alessio Celentano 3 Sep 10, 2021
An open source terminal project made in python

Calamity-Terminal An open source terminal project made in python. Calamity Terminal is a free and open source lightweight terminal. Its made 100% off

1 Mar 08, 2022
Faza - Faza terminal, Faza help to beginners for pen testing

Faza terminal simple tool for pen testers Use small letter only for commands Don't use space after command 'help' for more information Installation gi

Ag3ntQ 5 Feb 20, 2022
MiShell is a multi-platform, multi-architecture project based on the first version (MiShell32)

MiShell is a multi-platform, multi-architecture project based on the first version (MiShell32), which offers super super small reverse shell payloads great for injection in buffer overflow vulnerabil

Kamyar Hatamnezhad 0 Oct 27, 2022
Runs a command in P4wnP1 and displays the output on OLED screen (SH1106)

p4wnp1-oled-terminal Runs a command in P4wnP1 and displays the output on OLED screen (SH1106) Works on Raspberry Pi Zero 2 W Tested successfully on RP

PawnSolo 1 Dec 14, 2021
ICMP Reverse Shell written in Python 3 and with Scapy (backdoor/rev shell)

icmpdoor - ICMP Reverse Shell icmpdoor is an ICMP rev shell written in Python3 and scapy. Tested on Ubuntu 20.04, Debian 10 (Kali Linux), and Windows

Jeroen van Kessel 206 Dec 29, 2022
Python codecs extension featuring CLI tools for encoding/decoding anything

CodExt Encode/decode anything. This library extends the native codecs library (namely for adding new custom encodings and character mappings) and prov

Alex 210 Dec 30, 2022