Been using the CLI more and more and for whatever reason it gives me more dopamine than using apps with a GUI and I’m curious about what else is out there since I was a windows user til 6 months ago.
Discovering ish and the ability to use alpine linux on my iphone, also has me curious if there is anything useful/fun out there that isn’t openssh, ranger, and ffmpeg. (a-shell is still updated and comes with those two by default but doesn’t have access to alpine repo and apk, uses its own iphone based thing) Tho im curious about cli tools/apps in general to use on my pc or over ssh, not just those that could be installed on my phone
I mostly use ffmpeg to convert video and compress stuff for size limits (so I can convert before sftp when away from my pc after the render finishes) Ranger file manager on phone since it can easily exit at a path, and yazi with the shell script that lets it exit at whatever path your on on pc.
Will update this list as people comment.
- Conversion/Compression: ffmpeg
- Email: mutt, neomut
- File management: mc, nnn, ranger, yazi, sfm
- File editor: vim, neovim
- Git: lazygit
- Piracy: ani-cli (anime) rip (music)
- Pdf Management: pdftk (pdftk-idk, or stapler)
- Python: rich, pythondialog, textual
- Docker management : lazydocker
- Performance monitor: btop, nvtop (nvidia), ncdu (disk usage)
- Network management: nmtui
- Web browser : browsh (firefox backend)
- Video downloader: yt-dlp
- Shell scripts: dialog, whiptail
- Misc: netpbm (plaintext image creation) If you can’t comment this post seems to be bugged for me at least, says I’ve deleted it and I can’t reply to anyone.
nvtop: visualize nvidia GPU usage and memorytop: monitor/manage processes althoughps aux | grep appNameis still my goto.pyenv: easily install and use any python versionipython: a customizable python interpreter. I have figured out many poorly documented modules using ipython and great for exploring modules.Import psutil as ps ps.#then hit tabafter hitting tab will show all attributes related to your imported module, use arrow keys to select methods == profit!
nethogs: monitor network connections by app.firejail: app sandboxingWell, I used vi a lot, but seriously nano is better especially for beginner.
I also use DoubleCommander instead of midnight one
deleted by creator
GNU Parallel: It lets you run multiple things in parallel. It’s very useful for batch converting large numbers of files.
My list is a bit software developer-centric, but can be useful for development-adjacent tasks too.
- The Github CLI - great for doing routine GH work, like opening PRs or filing issues.
- glab - ditto for Gitlab.
- jq - JSON parsing, formatting, searching and modification.
- pup - like jq, but for HTML pages.
- sed - A powerful text find-and-replace tool with regular expressions.
- scp - File transfers over SSH.
- xargs - run a command for every line of output from another command. Great for automating manual tasks.
- curl - make any type of HTTP (and many other protocols) request from the command line.
- tar - compress/uncompress archive files.
- pwgen - generate passwords with lots of options.
- uuidgen - generate universally unique ids.
- exiftool - read and modify image/video/audio file metadata. Good for adding/editing tags/albums/dates/etc.
zoxide. It’scdbut better. It remembers which directories you’ve navigated to, and fuzzy finds them.So instead of typing:
cd /really/long/path/to/sime/dirYou can type:
zoxide dirAnd it’ll take you right to the directory.
I’ve got it aliased to
zdso I type:zd dirAnd I’m there.
Pretty sure zoxide automatically uses “z” as its alias by default. One less letter for you to type.
Oh. I did not know that. Gonna try that right now.
You can save tons of time by adding aliases to your
.gitconfigsuch as ‘ga $fname’ (where “fname” would be files you want to add) the alias for git add. You can also do the same thing with gc, gs, etc and if youre like me and you write dozens of lines of code a day, it can save you a lot of time.I’ve already aliased
glfor git log with my flags, but have been too lazy to add more aliases.
Git: lazygit
Docker management : lazydockerWell, seeing them in the list like that rubs me the wrong way. 😅
Both of those come with a CLI, called
gitanddockerrespectively, which is the official way of using them. These CLIs might not be particularly sexy, depending on who you ask, but they’re decent enough and worth learning, even if you go thelazy*route, since online resources all just explain the official CLIs and you might find yourself one day administering remote systems where you can’t install additional software…streamripfor ripping music from streaming servicesI’m a big fan of jq. It’s a domain-specific language for manipulating JSON data.
ImageMagick is like ffmpeg but for images.
inotify-tools has command-line utilities that can be used in a Bash script or a Bash one-liner to make arbitrary things “happen” when something “happens” to a file or directory. (Then the file is opened or written to or renamed or whatever.)
I probably should mention rsync. It’s like a swiss army knife for copying files from one place to another. And it supports “keeping files syncronized” between two locations.
Of course, there’s tons of stuff that you pretty much can’t talk about Bash scripting without mentioning. Sed, awk, grep, find, etc.
Also, I totally relate about the terminal giving more dopamine. I kinda just hate going on a point-and-click adventure to do things like image editing or whatever. To the point that I’ve written a whole-ass domain-specific-language to do what I want rather than use Gimp. (And I’m working on another whole-ass domain-specific-language to do a traditionally-GUI-app sort of task.)
A bunch of GNU tools have added JSON output and it’s so good. Like, GNU
columncan take tabular data and convert it into JSON really easily. It’s like the perfect text stream.OMG how did I not know this… It just might be time to switch to nushell/elvish.
jqis indispensable.
Let’s save yourself some time. https://github.com/toolleeo/awesome-cli-apps-in-a-csv
pdftk is fantastic for merging and splitting pdfs (among other things)
Amazing tool but sadly abandoned and slowly getting more and more unstable and difficult to build
The better options:
- Stapler (which also hasn’t been updated in a few years) is a version implemented in python
- pdftk-idk is a slightly more active implementation in java
aerc for email
Xargs, bc, paste, sed, awk.
bluetuithis great for managing Bluetooth devices.Good old nano is something i use a lot, although i am considering finally giving micro a try, heard a lot of good things about it, and i want something with a bit more features in the terminal, but i really hate vim keybinds. I also really like rmpc, which is an mpd client with album art support, though i am not using it anymore at the moment because i realized mpd wasn’t really what i was looking for when it comes to music players.
Edit: also want to mention cyanrip. Really good cli cd ripper with a lot sane defaults, easy to use, and in terms of accuracy probably the closest thing to EAC on windows.
s-tui is also great. It’s a tui stress testing utility. I still use it every now and then even if it’s just to test if my fan curve is actually working by putting some load on the cpu.







