DEV Community

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

Discussion (51)

pic
Editor guide
Collapse
vonheikemen profile image
Heiker
  • cmus: Music player.

  • neovim: Text editor.

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

Comment Not Found

And the not so daily.

  • entr: File watcher.

  • bat: cat but with syntax highlight.

Collapse
kodekat profile image
KodeKat Author • Edited

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.

Collapse
vonheikemen profile image
Heiker

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.

Thread Thread
kodekat profile image
KodeKat Author

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.

Thread Thread
vonheikemen profile image
Heiker

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.

Thread Thread
kodekat profile image
KodeKat Author

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

Collapse
jmfayard profile image
Jean-Michel Fayard πŸ‡«πŸ‡·πŸ‡©πŸ‡ͺπŸ‡¬πŸ‡§πŸ‡ͺπŸ‡ΈπŸ‡¨πŸ‡΄

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 ;-)

Collapse
kodekat profile image
KodeKat Author • Edited

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.

Collapse
jhulten profile image
Jeffrey Hulten

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.

Collapse
oivoodoo profile image
Alexandr K • Edited

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

Collapse
martinwallgren profile image
Martin Wallgren

Everytime I use jq I feel like a json ninja.

Collapse
oivoodoo profile image
Alexandr K • Edited

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

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

Collapse
kodekat profile image
KodeKat Author

Both are pretty useful and well-known indeed!

Collapse
ahferroin7 profile image
Austin S. Hemmelgarn

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.
Collapse
kodekat profile image
KodeKat Author

Thanks for sharing your favourites!

Collapse
alexisfinn profile image
AlexisFinn • Edited

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.

Collapse
kodekat profile image
KodeKat Author

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.

Collapse
alexisfinn profile image
AlexisFinn

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.

Thread Thread
kodekat profile image
KodeKat Author

True, it's difficult to draw a line.

Collapse
cben profile image
Beni Cherniavsky-Paskin

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...

Collapse
mitchartemis profile image
Mitch Stanley
  • 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!)
Collapse
kodekat profile image
Collapse
dylanjha profile image
Dylan Jhaveri

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!

Collapse
kodekat profile image
KodeKat Author

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

Collapse
dylanjha profile image
Dylan Jhaveri

What's an example of a file manager?

Thread Thread
kodekat profile image
KodeKat Author

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

Collapse
imprakharshukla profile image
Prakhar Shukla

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 😊

Collapse
kodekat profile image
KodeKat Author

That's cool! How about Termux?

Collapse
imprakharshukla profile image
Prakhar Shukla

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

Collapse
dmfay profile image
Dian Fay • Edited

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
Collapse
kodekat profile image
KodeKat Author

Cool! Thanks!

Collapse
nire0510 profile image
Nir Elbaz

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
Collapse
kodekat profile image
KodeKat Author

Thanks for sharing!

Collapse
dengel29 profile image
Dan

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

Collapse
kodekat profile image
KodeKat Author

I use the GUI base KeepassX2 myself for this.

Collapse
alexisfinn profile image
AlexisFinn

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.
Collapse
moopet profile image
Ben Sinclair

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

Collapse
kodekat profile image
KodeKat Author

The best is no deps.

Collapse
moopet profile image
Ben Sinclair

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

Thread Thread
kodekat profile image
KodeKat Author

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.

Collapse
warfares profile image
Rodolfo ☠️

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

Collapse
kodekat profile image
KodeKat Author

Fixed now! Thank you!

Collapse
0ctavia profile image
Octa

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

Collapse
kodekat profile image
KodeKat Author

i3 is really cool!

Collapse
alexisfinn profile image
AlexisFinn

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

Collapse
kholioeg profile image
Khaled Hamed
  • 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
Collapse
kodekat profile image
KodeKat Author

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

Collapse
jimpriest profile image
Jim Priest

z - z - jump around

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

Collapse
alansolitar profile image
Alan Solitar

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

Collapse
kodekat profile image
KodeKat Author

My pleasure!

Collapse
linuxrocks2000 profile image
LinuxRocks2000

Just plain Coreutils stuff, artfully arranged in SO copy/paste snippets.