Command-line utilities

Here is a curated list of tools that I cannot live without, after many iterations (last update is January, 15th 2025). Working on Linux and Windows, I try to use cross-platforms tools.

Must-have

  • nushell is my shell. fish is nice but if you want to lose POSIX compatibility, you should go all the way and embrace a new workflow. It considers all data as table, allowing for powerful manipulation. It makes shell scripting fun by staying is a single language. Also, pandas support has been added :)
  • zoxide is fantastic for moving around quickly in the shell. For example, z boo jumps to book, instead of typing cd home/user/misc/books. A must have.
  • typst for writing papers and reports. More on that in a future post.
  • ripgrep is a modern grep but cross-platform and faster.
  • wezterm as a terminal, also available on Windows. Alternative are alacrity (with a terminal multiplexer like zellij or tmux) or kitty (not available on Windows) that have built-in tabs and windows
  • jj has replaced git in my workflow (jj is compatible with git though). But there are nice TUI interfaces with git worth mentioning : lazygit 1
  • atuin to search shell history
  • chezmoi to manage dotfiles

For the occasional use

  • hugo for this blog. Contrary to zola, it supports org-mode.
  • mdBook is my go-to way of generating documentation. Theme is very readable and setup is reasonably fast.
  • pier serves as a database for your one-liners. For example, I have a Haskell script to toggle between a dark and light theme that is run with pier run change-theme.

Awesome tools that I no longer use

These may be of interest to other people but these are been superseded in my workflow.

  • taskwarrior to manage tasks for non Org-mode users. More on that in a future post.
  • Replacement of find, ls and bat in Rust are really cool but in practice, nushell is enough for my cases:

    • fd has an easier syntax than find (written in Rust). For example, convert all org files to markdown with
1
fd -e md -x pandoc {} -o {.}.md
  • sd also offers a simpler way to replace text with sd. Example: replace title: by title = :
1
      sd 'title:' 'title = '=
  • eza can replace ls
  • bat is more colorful that cat

Inspiration


1

Or gitui but this issue is troublesome.

Licensed under CC BY-NC-SA 4.0
Built with Hugo
Theme Stack designed by Jimmy