Modern Linux tools

3 hours ago (ikrima.dev)

These may be objectively superior (I haven't tested), but I have come to realize (like so many others) that if you ever change your OS installation, set up VMs, or SSH anywhere, preferring these is just an uphill battle that never ends. I don't want to have to set these up in every new environment I operate in, or even use a mix of these on my personal computer and the traditional ones elsewhere.

Learn the classic tools, learn them well, and your life will be much easier.

  • I have some of these tools, they are not "objectively superior". A lot of them make things prettier with colors, bargraphs, etc... It is nice on a well-configured terminal, not so much in a pipeline. Some of them are full TUIs, essentially graphical tools that run in a terminal rather than traditional command line tools.

    Some of them are smart but sometimes I want dumb, for example, ripgrep respects gitignore, and often, I don't want that. Though in this case, there is an option to turn it off (-uuu). That's a common theme with these tools too, they are trying to be smart by default and you need option to make them dumb.

    So no, these tools are not "objectively superior", they are generally more advanced, but it is not always what you need. They complement classic tools, but in no way replace them.

  • One of the reasons I really like Nix, my setup works basically everywhere (as long the host OS is either Linux or macOS, but those are the only 2 environments that I care). I don't even need root access to install Nix since there are multiple ways to install Nix rootless.

    But yes, in the eventual case that I don't have Nix I can very much use the classic tools. It is not a binary choice, you can have both.

  • Some people spend the vast majority of their time on their own machine. The gains of convenience can be worth it. And they know enough of the classic tools that it's sufficient in the rare cases when working on another server.

    Not everybody is a sysadmin manually logging into lots of independent, heterogeneous servers throughout the day.

  • > that if you ever change your OS installation

    apt-get/pacman/dnf/brew install <everything that you need>

    You'll need install those and other tools (your favorite browser, you favorite text editor, etc) anyway if you're changing your OS.

    > or SSH anywhere

    When you connect through SSH you don't have GUI and that's not a reason for avoiding using GUI tools, for example.

    > even use a mix of these on my personal computer and the traditional ones elsewhere

    I can't see the problem, really. I use some of those tools and they are convenient, but it doesn't matter that I can't work without that. For example, bat: it doesn't replace cat, it only outputs data with syntax highlight, makes my life easier but if I don't have it, ok.

  • > Learn the classic tools, learn them well, and your life will be much easier.

    Agreed, but that doesn't stop you from using/learning alternatives. Just use your preferred option, based on what's available. I realise this could be too much to apply to something like a programming language (despite this, many of us know more than one) or a graphics application, but for something like a pager, it should be trivial to switch back and forth.

  • I do prefer some of these tools, due to a much better UX, but the only one I do install in every unix box is ripgrep.

  • This is how I feel as well. Spend some time "optimizing" my CLI with oh my zshell etc. when I was young.

    Only to feel totally handicapped when logging in into a busybox environment.

    I'm glad I learned how to use vi, grep, sed..

    My only change to an environment is the keyboard layout. I learned Colemak when I was young. Still enjoying it every day.

  • I wanted to say we should just stick with what Unix shipped forever. But doesn't GNU already violate that idea?

    • Well, even “Unix” had some differences (BSD switches vs SysV switches). Theoretically, POSIX was supposed to smooth that out, but it never went away. Today, people are more likely to be operating in a GNU Linux environment than anything else (that just a market share fact, not a moral judgement, BSD lovers). Thus, for most people, GNU is the baseline.

  • I know well enough my way around vi, because although XEmacs was my editor during the 1990's when working on UNIX systems, when visiting customers there was a very high probability that they only had ed and vi installed on their server systems.

    Many folks nowadays don't get how lucky they are, not having to do UNIX development on a time-sharing system, although cloud systems kind of replicate the experience.

I’m on a Mac, and some of the default tooling feels dated: GNU coreutils and friends are often stuck around mid-2000s versions. Rather than replace or fight against the system tools, I supplement them with a few extras. Honestly, most are marginal upgrades over what macOS ships with, except for fzf, which is a huge productivity boost. Fuzzy-finding through my shell history or using interactive autocompletion makes a noticeable difference day to day.

  • >some of the default tooling feels dated: GNU coreutils and friends are often stuck around mid-2000s versions

    That’s because they’re not GNU coreutils, they’re BSD coreutils, which are spartan by design. (FWIW, this is one of my theories for why Linux/GNU dominated BSD: the default user experience of the former is just so much richer.)

i wish there was an additional column in the table, that says "what problem does it solve". oh, and 'it's written in rust' does not count.

  • “It’s written in Rust”

    Actual LOL. Indeed. I was working for a large corporation at one point and a development team was explaining their product. I asked what its differentiators were versus our competitors. The team replied that ours was written in Go. #faceplam

  • Many of the entries do include this detail — e.g. "with syntax highlighting", "ncurses interface", and "more intuitive". I agree that "written in rust", "modern", and "better" aren't very useful!

This is 2023 article. As with most “modern tools” half of them probably already have some newer, shinier and more trendy replacements

the second item is

exa modern replacement for ls/tree, not maintained

"not maintained" doesn't smell "modern" to me...

duf is pretty good for drive space, has some nice colours and graphs. But its also not as useful for feeding into other tools.

btop has been pretty good for watching a machine to get an overview of everything going on, the latest version has cleaned up how the lazy CPU process listing works.

zoxide is good for cding around the system to the same places. It remembers directories so you avoid typing full paths.

would be good to have an indicator if it’s available with your distro by default or what package you’ll need to install it since all tools are only as useful as available they are…

I basically live in the terminal. However, every single one of these tools offers a solution to a problem that I don't have; aren't installed on my system; and mysteriously have many tens of thousands of github stars.

I genuinely don't know what is going on here.

  • The core Unix toolset is so good, that you can easily get by with it. Many of these tools are better, but still not necessary, and they certainly aren't widely available by default.

Modern doesn't always mean better. A better replacement for mplayer was mpv, and in some cases mplayer was faster than mpv (think about legacy machines).

   - bat it's a useless cat. Cat concatenates files. ANSI colour breaks that.

   - alias ls='ls -Fh' , problem solved. Now you have * for executables, / for directories and so on.

   - ncdu it's fine, perfect for what it does

   - iomenu it's much faster than fzf and it almost works the same

   - jq it's fine, it's a good example on a new Unix tool

   - micro it's far slower than even vim

   - instead of nnn, sff https://github.com/sylphenix/sff with soap(1) (xdg-open replacement) from https://2f30.org create a mega fast environment. Add MuPDF and sxiv, and nnn and friends will look really slow compared to these.

Yes, you need to set config.h under both sff and soap, but they will run much, much faster than any Rust tool on legacy machines.

  • > bat it's a useless cat. Cat concatenates files. ANSI colour breaks that.

    It's useless as a cat replacement, I agree. The article really shouldn't call it that, although the program's GitHub page does self-describe it as "a cat clone". It's more of a syntax highlighter combined with a git diff viewer (I do have an issue with that; it should be two separate programs, not one).

  • > bat it's a useless cat

    I can't see bat as a "useless cat" or a replacement for cat except for reading source code in the terminal. It's more a like a less with syntax highlight or a read-only vim.

    • I agree with this. cat is great for "cating" bat is great for throwing shit on the terminal in a fashion that makes it semantically easier to reason with, two different use cases.