Skip to content
/ PNU Public

The PNU project: a learning exercise to reimplement UNIX command-line tools in Python, forming a portable utilities collection

License

Notifications You must be signed in to change notification settings

HubTou/PNU

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

PNU logo

PNU, as in PNU is Not Unix, is a challenge project and a learning exercise to reimplement UNIX command-line tools in Python, forming a kind of "pytnix" portable user-land utilities collection.

It's meant to be pronounced "Pneu" (tyre in French), a "pun" which seems appropriate as it's clearly another reinvention of the wheel, longtime after the GNU project :-)

Objectives:

Project status:

pip install PNU

or you can install PNU plus a selection of additional third-parties tools with this command:

pip install pytnix
  • This page is both for the challenge description and for referencing unix tools rewrites made by contributors.
  • To contribute you can simply create:
    • your own Github repositories and link them to the project by using the pnu-project topic
    • your own PyPi packages and link them to the project by using the pnu-project keyword (but please don't use the "pnu-" package prefix for your own entries)

How to contribute:

Suggested tasks and progression:

The following, (A)D&D inspired, level structure is proposed for gamification. We suggest level bosses in order to complete a level (but no Demogorgon here, we are not in Stranger Things :-)) and associated πŸ† trophies for fun :-)

We're also thinking about offering Habitica's quests for further gamification.

The following classification of commands is still in progress.

Basic levels

Level 1 sub projects

Handling return codes, printing to the terminal:

Level 2 sub projects

Basic string handling:

Basic math or data structures, school level:

Level 3 sub projects

Basic filters, command line & environment processing, file operations:

Level 4 sub projects

Basic text processing utilities, multiple files or many options:

  • cat => with full options
  • nl
  • cmp
  • comm
  • uniq => suggested level boss. Trophy: 1️⃣

Level 5 sub projects

Basic utilities using more complex parsing:

Intermediate levels

System utilities (implying minimum Unix system knowledge). Regular expressions, text parsing. CSV, JSON, XML, HTML data handling.

Level 6 sub projects

Basic system utilities.

Level 7 sub projects

Basic system utilities, possibly recursive ones:

Level 8 sub projects

Level 9 sub projects

Level 10 sub projects

Advanced levels

Full screen text applications, windowed applications, office documents manipulation, image manipulation, web scraping, network applications, automation.

Interactive full screen applications:

Advanced system utilities, data compression:

Level 11 sub projects

Level 12 sub projects

Level 13 sub projects

Level 14 sub projects

Level 15 sub projects

Master levels

Languages (interpreters, compilers), database management systems, network protocols:

Level 16 sub projects

Level 17 sub projects

Level 18 sub projects

Level 19 sub projects

Level 20 sub projects

  • sh => Suggested level boss. Trophy: 🐚

Immortal levels

It's a long way to the top if you wanna get your entry in the "Deities & Demigods" of hackers, but here are some examples to inspire you from the Unix & open source pantheon (note: having a :neckbeard: beard is not mandatory)

However, all of this is beyond the scope of the project and probably not a good idea to implement in Python :-)

Demigods level transcending projects

Full operating system kernels & device drivers:

Deities level transcending projects

Making your own hardware platform and all the software to run it.

  • Although not Unix related, πŸ§™β€β™‚οΈ The Woz springs to mind here and his excellent autobiography, iWoz, is highly recommended for a good glimpse into a true hacker's mind.