Ultimate Plumber is a tool for writing Linux pipes with instant live preview
up is the Ultimate Plumber, a tool for writing Linux pipes in a terminal-based UI interactively, with instant live preview of command results.
The main goal of the Ultimate Plumber is to help interactively and incrementally explore textual data in Linux, by making it easier to quickly build complex pipelines, thanks to a fast feedback loop. This is achieved by boosting any typical Linux text-processing utils such as
perl, etc., etc., by providing a quick, interactive, scrollable preview of their results.
pkg install up| macOS:
brew install up| Other OSes
To start using up, redirect any text-emitting command (or pipeline) into it — for example:
$ lshw |& ./up
in the input box at the top of the screen, start writing any bash pipeline; then press Enter to execute the command you typed, and the Ultimate Plumber will immediately show you the output of the pipeline in the scrollable window below (replacing any earlier contents)
For example, you can try writing:
grep network -A2 | grep : | cut -d: -f2- | paste - -— on my computer, after pressing Enter, the screen then shows the pipeline and a scrollable preview of its output like below:
| grep network -A2 | grep : | cut -d: -f2- | paste - - Wireless interface Centrino Advanced-N 6235 Ethernet interface RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
WARNING: Please be careful when using it! It could be dangerous. In particular, writing "rm" or "dd" into it could be like running around with a chainsaw. But you'd be careful writing "rm" anywhere in Linux anyway, no?
when you are satisfied with the result, you can press Ctrl-X to exit the Ultimate Plumber, and the command you built will be written into
up1.shfile in the current working directory (or, if it already existed,
up2.sh, etc., until 1000, based on Shlemiel the Painter's algorithm). Alternatively, you can press Ctrl-C to quit without saving.
If the command you piped into up is long-running (in such case you will see a tilde
~indicator character in the top-left corner of the screen, meaning that up is still waiting for more input), you may need to press Ctrl-S to temporarily freeze up's input buffer (a freeze will be indicated by a
#character in top-left corner), which will inject a fake EOF into the pipeline; otherwise, some commands in the pipeline may not print anything, waiting for full input (especially commands like
perl, etc. may also show incomplete results). To unfreeze back, press Ctrl-Q.
bash -ccommand, so any bash-isms should work.
+character should get displayed in the top-left corner of the screen. (This is intended to be changed to a dynamically/manually growable buffer in a future version of up.)
|in the pipeline; also forking of pipelines, merging, feedback loops, and other mixing and matching (though I'd strongly prefer if Luna was to do it eventually).
— Mateusz Czapliński