[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-5126":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":16,"stars30d":17,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":18,"rankGlobal":9,"rankLanguage":9,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":9,"pushedAt":9,"updatedAt":29,"readmeContent":30,"aiSummary":31,"trendingCount":15,"starSnapshotCount":15,"syncStatus":32,"lastSyncTime":33,"discoverSource":34},5126,"up","akavel\u002Fup","akavel","Ultimate Plumber is a tool for writing Linux pipes with instant live preview",null,"Go",8836,129,97,22,0,1,12,37.34,"Apache License 2.0",false,"master",true,[24,25,26,27,28,5],"instant-preview","linux","live-programming","pipes","tui","2026-06-12 02:01:08","\u003Cimg align=\"left\" width=\"183\" height=\"154\" src=\"logo.svg\" \u002F>\n\n# up - the Ultimate Plumber\n\n**up** is the **Ultimate Plumber**, a tool for writing Linux pipes in a\nterminal-based UI interactively, with instant live preview of command results.\n\nThe main **goal** of the Ultimate Plumber is to help **interactively and\nincrementally explore textual data** in Linux, by making it easier to quickly\nbuild complex pipelines, thanks to a **fast feedback loop**. This is achieved\nby boosting any typical **Linux text-processing utils** such as `grep`, `sort`,\n`cut`, `paste`, `awk`, `wc`, `perl`, etc., etc., by providing a quick,\n**interactive, scrollable preview** of their results.\n\n[![](up.gif)](https:\u002F\u002Fasciinema.org\u002Fa\u002F208538)\n\n## Usage\n\n**[Download *up* for Linux](https:\u002F\u002Fgithub.com\u002Fakavel\u002Fup\u002Freleases\u002Flatest\u002Fdownload\u002Fup)**\n&nbsp; | &nbsp; [ArchLinux](https:\u002F\u002Fwiki.archlinux.org\u002Findex.php\u002FArch_User_Repository): [`aur\u002Fup`](https:\u002F\u002Faur.archlinux.org\u002Fpackages\u002Fup\u002F)\n&nbsp; | &nbsp; FreeBSD: [`pkg install up`](https:\u002F\u002Fwww.freshports.org\u002Ftextproc\u002Fup)\n&nbsp; | &nbsp; macOS: [`brew install up`](https:\u002F\u002Fformulae.brew.sh\u002Fformula\u002Fup)\n&nbsp; | &nbsp; [Other OSes](https:\u002F\u002Fgithub.com\u002Fakavel\u002Fup\u002Freleases)\n\nTo start using **up**, redirect any text-emitting command (or pipeline) into it\n— for example:\n\n    $ lshw |& .\u002Fup\n\nthen:\n\n- use ***PgUp\u002FPgDn*** and ***Ctrl-[←]\u002FCtrl-[→]*** for basic browsing through\n  the command output;\n- in the input box at the top of the screen, start **writing any bash\n  pipeline**; then **press Enter to execute the command you typed**,\n  and the Ultimate Plumber will immediately show you the output of\n  the pipeline in the **scrollable window** below (replacing any\n  earlier contents)\n    - For example, you can try writing:\n      `grep network -A2 | grep : | cut -d: -f2- | paste - -`\n      — on my computer, after pressing *Enter*, the screen then shows\n      the pipeline and a scrollable preview of its output like below:\n\n             | grep network -A2 | grep : | cut -d: -f2- | paste - -\n             Wireless interface      Centrino Advanced-N 6235\n             Ethernet interface      RTL8111\u002F8168\u002F8411 PCI Express Gigabit Ethernet Controller\n\n    - **WARNING: Please be careful when using it! It could be dangerous.**\n      In particular, writing \"rm\" or \"dd\" into it could be like running around\n      with a chainsaw. But you'd be careful writing \"rm\" anywhere in Linux\n      anyway, no?\n- when you are satisfied with the result, you can **press *Ctrl-X* to exit**\n  the Ultimate Plumber, and the command you built will be **written into\n  `up1.sh` file** in the current working directory (or, if it already existed,\n  `up2.sh`, etc., until 1000, based on [Shlemiel the Painter's\n  algorithm](https:\u002F\u002Fwww.joelonsoftware.com\u002F2001\u002F12\u002F11\u002Fback-to-basics\u002F)).\n  Alternatively, you can press ***Ctrl-C*** to quit without saving.\n- If the command you piped into *up* is long-running (in such case you will see\n  a tilde `~` indicator character in the top-left corner of the screen, meaning\n  that *up* is still waiting for more input), you may need to press\n  ***Ctrl-S*** to temporarily freeze *up*'s input buffer (a freeze will be\n  indicated by a `#` character in top-left corner), which will inject a fake\n  EOF into the pipeline; otherwise, some commands in the pipeline may not print\n  anything, waiting for full input (especially commands like `wc` or `sort`,\n  but `grep`, `perl`, etc. may also show incomplete results). To unfreeze back,\n  press ***Ctrl-Q***.\n\n## Additional Notes\n\n- The pipeline is passed verbatim to a `bash -c` command, so any bash-isms should work.\n- The input buffer of the Ultimate Plumber is currently fixed at **40 MB**. If\n  you reach this limit, a `+` character should get displayed in the top-left\n  corner of the screen. (This is intended to be changed to a\n  dynamically\u002Fmanually growable buffer in a future version of *up*.)\n- **MacOSX support:** I don't have a Mac, thus I have no idea if it works on\n  one. You are welcome to try, and also to send PRs. If you're interested in\n  me providing some kind of official-like support for MacOSX, please consider\n  trying to find a way to send me some usable-enough Mac computer. Please note\n  I'm not trying to \"take advantage\" of you by this, as I'm actually not at all\n  interested in achieving a Mac otherwise. (Also, trying to commit to this kind\n  of support will be an extra burden and obligation on me. Knowing someone out\n  there cares enough to do a fancy physical gesture would really help alleviate\n  this.) If you're serious enough to consider this option, please contact me by\n  email (mailto:czapkofan@gmail.com) or keybase (https:\u002F\u002Fkeybase.io\u002Fakavel), so\n  that we could try to research possible ways to achieve this.\n  Thanks for understanding!\n- **Prior art:** I was surprised no one seemed to write a similar tool before,\n  that I could find. It should have been possible to write this since the dawn\n  of Unix already, or earlier! And indeed, after I announced *up*, I got enough\n  publicity that my attention was directed to one such earlier project already:\n  **[Pipecut](http:\u002F\u002Fpipecut.org\u002Findex.html)**. Looks interesting! You may like\n  to check it too! (Thanks [@TronDD](https:\u002F\u002Flobste.rs\u002Fs\u002Facpz00\u002Fup_tool_for_writing_linux_pipes_with#c_qxrgoa).)\n- **Other influences:** I don't remember the fact too well already, but I'm\n  rather sure that this must have been inspired in big part by The Bret Victor's Talk(s).\n\n## Future Ideas\n\n- I have quite a lot of ideas for further experimentation of development of\n  *up*, including but not limited to:\n    - [RIIR](https:\u002F\u002Frust-lang.org) (once I learn enough of Rust... at some\n      point in future... maybe...) — esp. to hopefully make *up* be a smaller\n      binary (and also to maybe finally learn some Rust); though I'm somewhat\n      afraid if it might ossify the codebase and make harder to develop\n      further..? ...but maybe actually converse?...\n    - Maybe it could be made into an UI-less, RPC\u002FREST\u002Fsocket\u002Ftext-driven\n      service, like gocode or [Language Servers](https:\u002F\u002Flangserver.org\u002F), for\n      integration with editors\u002FIDEs (emacs? vim? VSCode?...) I'd be especially\n      interested in eventually merging it into [Luna\n      Studio](https:\u002F\u002Fluna-lang.org\u002F); RIIR may help in this. (Before this, as\n      a simpler approach, multi-line editing may be needed, or at least\n      left&right scrolling of the command editor input box. Also, some kind of\n      jumping between words in the command line; readline's *Alt-b* & *Alt-f*?)\n    - Make it possible to [capture output of already running\n      processes](https:\u002F\u002Fstackoverflow.com\u002Fa\u002F19584979\u002F98528)! (But maybe that\n      could be better made as a separate, composable tool! In Rust?)\n    - Adding tests... (ahem; see also\n      [#1](https:\u002F\u002Fgithub.com\u002Fakavel\u002Fup\u002Fissues\u002F1)) ...also write `--help`...\n    - Making it work on Windows,\n      somehow[?](https:\u002F\u002Fgithub.com\u002Fmattn\u002Fgo-shellwords) Also, obviously, would\n      be nice to have some CI infrastructure enabling porting it to MacOSX,\n      BSDs, etc., etc...\n    - Integration with [fzf](https:\u002F\u002Fgithub.com\u002Fjunegunn\u002Ffzf) and other TUI\n      tools? I only have some vague thoughts and ideas about it as of now, not\n      even sure how this could look like.\n    - Adding more previews, for each `|` in the pipeline; also forking of\n      pipelines, merging, feedback loops, and other mixing and matching (though\n      I'd strongly prefer if [Luna](https:\u002F\u002Fluna-lang.org) was to do it\n      eventually).\n- If you are interested in financing my R&D work, contact me by email at:\n  czapkofan@gmail.com, or [on keybase.io as akavel](https:\u002F\u002Fkeybase.io\u002Fakavel).\n  I suppose I will probably be developing the Ultimate Plumber further anyway,\n  but at this time it's purely a hobby project, with all the fun and risks this\n  entails.\n\n— *Mateusz Czapliński*  \n*October 2018*\n\n*PS. The UP logo was conceived and generously sponsored\nby [Thoai Nguyen](https:\u002F\u002Fgithub.com\u002Fthoaionline)\nand [GPU Exchange](https:\u002F\u002Fgpu.exchange\u002F),\nwith a helping hand from [Many Pixels](https:\u002F\u002Fwww.manypixels.co\u002F).*\n","Ultimate Plumber (up) 是一个用于在基于终端的用户界面中交互式地编写 Linux 管道，并提供即时结果预览的工具。其核心功能包括通过快速反馈机制增强如 grep、sort、cut 等常见的 Linux 文本处理命令，使用户能够以互动方式逐步探索文本数据。该工具特别适用于需要对大量文本数据进行复杂处理和分析的场景，比如日志文件分析或系统状态监控等。使用 Go 语言开发，支持跨平台安装，为用户提供了一个高效直观的数据探索环境。",2,"2026-06-11 03:02:39","top_language"]