loading...

Terminal lover? Which tools do you use daily?

kodekat profile image KodeKat ・2 min read

There would always be some pieces of software you can't live without. In my case the important factors are productivity followed by entertainment. The list below is a collection of such utilities. Some of them are written by me.

  • nnn: tiny and fast file manager, du analyzer, fuzzy app launcher, batch renamer, file picker and a vim plugin. Needs minimal configuration. Tons of plugins available too!
  • vim: my favourite editor along with some awesome plugins. I also use vimdiff for file or directory diff-merge.
  • googler/ddgr: Google or DuckDuckGo from the terminal. How many times do you search a day?
  • w3m: fast textual web browser
  • lnav: to analyze (literally) huge logs those vim can't handle so well. Understands several vim keybinds.
  • ripgrep: an incredibly faster grep
  • rclone: mounts and syncs about any remote storage locally
  • Buku: browser-independent bookmark manager with powerful search capabilities
  • fzy: fast fuzzy text selector
  • bcal: storage expressions and general-purpose REPL or one shot calculator; anything from "2 + 2" to "(2 Gib * 1.5) + 4 KB"
  • MOC: light client-server based audio player that doesn't get in your way or track your tracks in a library
  • viu: view images in the terminal without exotic dependencies
  • aria2: multi-part multi-server lightweight file downloader
  • Termux: fully functional Linux console on Android

Posted on by:

kodekat profile

KodeKat

@kodekat

writing tools to boost terminal productivity (nnn, googler, Buku...)

Discussion

markdown guide
 
  • cmus: Music player.

  • neovim: Text editor.

  • micro: Intuitive terminal-based text editor. My replacement for nano.

  • fzf: Fuzzy search for almost anything.
  • ripgrep: A faster grep. Just because.
  • exa: a better ls. It has builtin git support. It looks good.
  • tmux: Terminal multiplexer. This one can do a bunch of stuff but I just use it to put things on the background and forget about them.
  • lazygit: A git UI for your terminal.
  • gotop: A fancy htop. To check out your resources.
  • gone: A pomodoro clock. Combined with tmux is awesome.
  • httpie: A user friendly http client.

And the not so daily.

  • entr: File watcher.

  • bat: cat but with syntax highlight.

 

gone is really cool! Didn't know about it. Thanks!

If I am not mistaken the first this cmus does is build a library of your tracks. That's something I try to avoid - let a 3rd party utility track my activity and data.

 

If I am not mistaken the first this cmus does is build a library of your tracks. That's something I try to avoid - let a 3rd party utility track my activity and data.

It doesn't do it by default, you have to execute the add command for it to start building the library, which I think is just a special playlist (a file that you can delete). There is also a browser "tab", with it you can add songs directly to the queue from the filesystem.

Does it work without a playlist?

If yes, does it add the rack I play to a playlist file? SMPlayer does it by default for example.

Does it work without a playlist?

Yes. It has a tab called "queue", the songs you add there get removed the moment it starts playing. As far as I know it doesn't have a permanent storage location. If you quit while there are still items in the queue they will not be there the next time you open cmus.

I'll check it out. Thank you very much for the details!

 

GitHub logo sharkdp / fd

A simple, fast and user-friendly alternative to 'find'


GitHub logo tldr-pages / tldr

πŸ“š Simplified and community-driven man pages


GitHub logo nvbn / thefuck

Magnificent app which corrects your previous console command.


GitHub logo ohmyzsh / ohmyzsh

πŸ™ƒ A delightful community-driven (with 1500+ contributors) framework for managing your zsh configuration. Includes 200+ optional plugins (rails, git, OSX, hub, capistrano, brew, ant, php, python, etc), over 140 themes to spice up your morning, and an auto-update tool so that makes it easy to keep up with the latest updates from the community.


GitHub logo kamranahmedse / git-standup

Recall what you did on the last working day. Psst! or be nosy and find what someone else in your team did ;-)

 

Yep, I use tldr frequently. Missed it!

For file search in dir tree nnn covers as the plugin fzopen integrates fzy for a fuzzy-select enabled drop-down list.

 

I use git-standup with a Bitbar script so I can look at my last seven days work in my menu bar. I bounce between dozens of infrastructure repos, so finding what I did recently is a boon.

 

Probably it's too obvious but anyway need to mention it :)

 

Everytime I use jq I feel like a json ninja.

 

My latest jq code looks weird but I can fully understand your ninja idea :)

gist.github.com/oivoodoo/982afa7cd...

 

Both are pretty useful and well-known indeed!

 

Also a big fan of vim (including vimdiff, which I use all the time, and the vim-pager functionality that Gentoo provides with it's Vim packages), aria2, and rclone. I'm a bit more fond of elinks over w3m, but use both to some degree.

Other tools I use a lot include:

  • screen: terminal multiplexing, scrollback handling, and bunches of other things. I've tried tmux as well, but find myself generally preferring screen.
  • Powerline: The ultimate status line plugin for Vim, as well as a great prompt plugin for many shells. It's wonderful being able to tell at a glance without reading anything if I'm root or not, remote or local, and whether the git repository I'm working in has uncommitted changes or not.
  • gpm: Get a working mouse on the Linux console without needing to run a desktop environment or X11 (I work from a Linux virtual console on a semi-regular basis).
  • htop: top on steroids. More user friendly, more features, easier configuration, and colored terminal support.
  • moreutils: An assortment of UNIX utilities that aren't part of most standard distributions. The parallel command is especially useful (GNU has a similar command with different syntax).
  • renameutils: A set of tools to simplify renaming files. The big ones for me are qmv and qcp, which let you edit the mapping of original names to new names in a text editor (such as vim), which in turn lets you do things like complex search and replace operations on filenames.
 

Thanks for sharing your favourites!

 
  • Fish Shell
  • TimeWarrior - For managing my time
  • RigGrep for search
  • z - For jumping directories
  • Neovim
  • asdf - For managing language versions
  • httpie - Curl request alternative
  • Snipline and snipcli - for storing/organising commands (Full disclosure: I built this!)
 
 

I find this tool z extremely useful. Instead of jumping around directories with cd you can fuzzy-find the right directory and z remembers recent directories that you have used to help you navigate to them quickly.

Another one is is bat it's like cat but better, with syntax highlighting.

Must haves!

 

Just to understand the use case better, why not use a file manager than having a record of your filesystem browsing history?

 

What's an example of a file manager?

I use nnn which doesn't record, for example. I wrote it specifically not to store any info.

 

For a bit fo fun:
sl: Contemplate a train go by while you reflect on the consequences of trying to type ls too quickly
cmatrix: the best matrix implementation i've come over to date
lolcat: pipe pretty much any output into this tool, and taste the rainbow
wttr: Graphical weather forecast in your terminal... a dream come true.

Seriously though:
zsh: How about having a better shell ?
ohmyzsh: And now how about making your better shell the most awesome thing on your computer ?
fish: For those who want the awesomeness but can't be bothered to spend hours fiddling with stuff (I personally LOVE to fiddle with stuff, so I never used Fish that much, but it's still pretty awesome)

Can't believe these aren't mentioned here, I think it goes to show that the shell is kindof taken for granted, whereas in reality it is the most used command of all.

 

The article was focused on utilities. I used to fish but moved to bash very recently because the issues with fish become evident as soon as you start scripting in it (imagine having a loop). Also, it's not remotely POSIX-compliant. It's also much heavier than bash/dash.

I have never used zsh so can't comment on it. For now, bash is working pretty well for me.

 

For those that want to get away from POSIX shell syntax, now is a an exciting time with many ideas being tried... github.com/oilshell/oil/wiki/Exter... has very extensive links to other shells, and discussions why better shell languages are interesting.

Personally I'm on fish so far, and find it way saner than bash for scripting, but I know what you mean, fish is still iterating on some things that are needed for serious scripting...

 

Sorry, I realise I went a bit off-topic, but I find it somewhat difficult to determine what is a utility or not.
is sudo a utility ? What about ls and vi ? And what about wttr I mentioned ? It is after all just a curl call.
So I figured wtf i'll just mention some stuff that I find cool.

Also I get you on fish, I don't really like it either for pretty much the same reasons, but then again it goes back to the same arguments of init VS systemd, xorg vs wayland, gnome vs unity etc... and the great thing is that you don't have to choose, you can have both and each choose what they prefer.

That's also why I love these lists of what people use/find cool, it's a great way of discovering new (and sometimes pretty useless but still cool) stuff.

True, it's difficult to draw a line.

 

Besides things other people covered:

  • Music player: ncmpcpp with mpd
  • Gimmick image viewer: tiv
  • Email: aerc
  • Database query results pager: pspg
  • Hosts file management: hostess
  • Calendar: when
  • Timer/stopwatch: termdown
  • Doing to tabular data what jq does for JSON: miller
  • Improved ls I don't use a lot because it's such a basic command: exa
 
 

The tools mentioned by other devs are great. But what if you could use them on Android? Yes Andronix allows you to do just that i.e. install a full fleged Linux Desktop (Ubuntu, Debian, Manjaro etc.) on a non-rooted Android device.

Here's an article that I wrote about it - dev.to/imprakharshukla/installing-...

Thanks for your time KodeKat 😊

 

That's cool! How about Termux?

 

We utilize Termux for the installation so that you can use Termux as well as Andronix.

 

Besides strictly development things, one command line tool I could not live without at this point is pass password storage, generator and manager. Not quite as convenient a package as lastpass or other consumer password managers, but it's free, has lots of plug-ins and all the features I need

 

I use the GUI base KeepassX2 myself for this.

 

Ooo just remembered one of my favorite everydays:

tig : A terminal interface for git that I find just awesome. My only complaint is that it starts by default in history/graph view whereas most of the time I want to add/remove/commit stuff.

So a quick bash alias:

tig='tig status'
does the trick.
 

Great list, thank you!
Adding my 2 cents:

  1. aka - cross computer alias command, with extra features, such as dynamic variables anfld more. npmjs.com/package/as-known-as
  2. jq - JSON query & manipulation tool. stedolan.github.io/jq/
  3. clfu - Reveal command-line gems (commandlinefu.com cli tool). npmjs.com/package/clfu
 
 

.... buku link is broke -> it redirect to nnn ... !! :-)

 

Fixed now! Thank you!

 

Ooh, viu seems good. I've tried terminal image viewers in the past and they've always been a bit weak. This seems neat.

 
 

No deps? Apart from Rust, which I use for... nothing.

But it's compiled statically, right? Because I don't have rust or cargo libs installed. The size of the binary (2MB) indicates that too.

 

I have not seen i3 mentioned here yet, but it's my favourite window tiling manager.

 

Been using i3 for a couple of years now, and I have a hard time going back.

I couple it with rofi for app launching

 
 

z - z - jump around

I've also got wtfutil on my list to look at

 

Thanks for introducing all of these cool packages. I will definitely check some of this stuff out.

 
 
  • tilda : terminal so I can quickly switch to my lovely terminal using function keys (e.g. F12)
  • yapet : password manager
  • mc: file Manager
  • taskworrior : task manager
  • zsh
 

Thanks for sharing! If you prefer using a FM take a look at nnn too!