Ergonomica

Liam Schumm

Description

[Ergonomica][1] is a cross-platform shell implemented in Python. It uses core Python modules such as `os` and `shutil` to create a feature-rich terminal environment. It also utilizes Python applications such as [Suplemon][2] to provide features such as a text editor available across platforms. As more people are becoming exposed to Linux/Unix (e.g., in OS X, when using a computing cluster or cloud-based hosting service, or most recently in WSL), there is an increasing appreciation (and need) for the power of using a Command Line Interface (CLI) to manipulate files and processes. However, Bash syntax as well as that of standard utilities such as `awk`, `sed` and `grep` have a steep learning curve, and their usage details can vary across platforms. The goal of Ergonomica is to provide an easy-to-use, cross-platform alternative for common shell functions. This will be of interest to users who drop into a shell only occasionally but want to increase their efficiency (e.g., data scientists and other researchers who need to use a high-performance computing cluster or cloud-based platform for their research), or users who work on multiple platforms. It will also be of special interest to Python users, since it uses elements of Python syntax and several of its features parallel Python built-in functions. Unlike newer shells such as zsh and fish which seek to improve upon existing Unix shells, Ergonomica was designed from the ground-up and features an entirely new syntax (although many commands common to existing shells work as expected). In many cases, a single command may be used to accomplish what would otherwise require an esoteric line in Bash or a small script. For example, to find all files in the current directory that have "2016" in their name, in Ergonomica one could simply write: ``` ls -> (filter) "2016" in x ``` Similarly, if someone wanted to list all files whose names are 7 characters long and add `.py` to the ends of their names: ``` ls -> (filter) len(x) == 7 -> (map) x + '.py' -> (splice) -> mv ``` In this way, Ergonomica aims to be simpler and more intuitive, especially for those with familiarity of a high-level programming language such as Python. [1]: https://github.com/ergonomica/ergonomica [2]: https://github.com/richrd/suplemon