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 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
🐍The nx-python plugin allows users to create a basic python application using nx commands.

🐍 NxPy: Nx Python plugin This project was generated using Nx. The nx-python plugin allows users to create a basic python application using nx command

StandUP Communications 74 Aug 31, 2022
Command-line parsing library for Python 3.

Command-line parsing library for Python 3.

36 Dec 15, 2022
Rover is a command line interface application that allows through browse through mission data, images, metadata from the NASA Official Website

🤖 rover Rover is a command line interface application that allows through browse through mission data, images, metadata from the NASA Official Websit

Saketha Ramanjam 4 Jan 19, 2022
triggercmd is a CLI client for the TRIGGERcmd cloud service.

TriggerCMD CLI client triggercmd is a CLI client for the TRIGGERcmd cloud service. installation the triggercmd package is available in PyPI. to instal

Gustavo Soares 7 Oct 18, 2022
PdpCLI is a pandas DataFrame processing CLI tool which enables you to build a pandas pipeline from a configuration file.

PdpCLI Quick Links Introduction Installation Tutorial Basic Usage Data Reader / Writer Plugins Introduction PdpCLI is a pandas DataFrame processing CL

Yasuhiro Yamaguchi 15 Jan 07, 2022
Gamestonk Terminal is an awesome stock and crypto market terminal

Gamestonk Terminal is an awesome stock and crypto market terminal. A FOSS alternative to Bloomberg Terminal.

Gamestonk Terminal 18.6k Jan 03, 2023
Doing set operations on files considered as sets of lines

CLI tool that can be used to do set operations like union on files considering them as a set of lines. Notes It ignores all empty lines with whitespac

Partho 11 Sep 06, 2022
tiptop is a command-line system monitoring tool in the spirit of top.

Command-line system monitoring. tiptop is a command-line system monitoring tool in the spirit of top. It displays various interesting system stats, gr

Nico Schlömer 1.3k Jan 08, 2023
gcptree - Like the unix tree command but for GCP Org Heirarchy

gcptree Like the unix tree command but for GCP Org Heirarchy. For a note on coloring, the org node is green, folders and blue, and projects that are n

Ryan Canty 25 Sep 06, 2022
Command Line (CLI) Application to automate creation of tasks in Redmine, issues on Github and the sync process of them.

Task Manager Automation Tool (TMAT) CLI Command Line (CLI) Application to automate creation of tasks in Redmine, issues on Github and the sync process

Tiamat 5 Apr 12, 2022
A simple CLI tool for converting logs from Poker Now games to other formats

🂡 Poker Now Log Converter 🂡 A command line utility for converting logs from Poker Now games to other formats. Introduction Poker Now is a free onlin

6 Dec 23, 2022
command line interface to manage VALORANT skins

A PROPER RELEASE IS COMING SOON, IF YOU KNOW HOW TO USE PYTHON YOU CAN USE IT NOW! valorant skin manager command line interface simple command line in

colinh 131 Dec 25, 2022
A CLI tool that scans through a directory and organizes all loose files into folders by file type.

Organizer CLI Organizer CLI is a python command line tool that goes through a given directory and organizes all un-folder bound files into folders by

Mulaza Jacinto 6 Dec 14, 2022
spid-sp-test is a SAML2 SPID/CIE Service Provider validation tool that can be executed from the command line.

spid-sp-test spid-sp-test is a SAML2 SPID/CIE Service Provider validation tool that can be executed from the command line. This tool was born by separ

Developers Italia 30 Nov 08, 2022
Skiller - With this payload you can control the target computer with (cmd)

Skiller - With this payload you can control the target computer with (cmd)

1 Jan 02, 2022
Commandline Python app to Autodownload mediafire folders and files.

Commandline Python app to Autodownload mediafire folders and files.

Tharuk Renuja 3 May 12, 2022
Investing library and command-line interface inspired by the Bogleheads philosophy

Lakshmi (Screenshot of the lak command in action) Background This project is inspired by Bogleheads forum. Bogleheads focus on a simple but powerful p

Sarvjeet Singh 108 Dec 26, 2022
AutoSub is a CLI application to generate subtitle files (.srt, .vtt, and .txt transcript) for any video file using Mozilla DeepSpeech.

AutoSub About Motivation Installation Docker How-to example How it works TO-DO Contributing References About AutoSub is a CLI application to generate

Abhiroop Talasila 414 Jan 06, 2023
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