88 lines
3.1 KiB
Plaintext
88 lines
3.1 KiB
Plaintext
|
+++
|
||
|
title = "The modern CLI Renaissance, In Rust?"
|
||
|
date = 2024-03-04T12:20:02-06:00
|
||
|
draft = true
|
||
|
+++
|
||
|
:caution-caption: pass:[<span style="font-size: 2em">☠</span>]
|
||
|
:important-caption: pass:[<span style="font-size: 2em">❗</span>]
|
||
|
:note-caption: pass:[<span style="font-size: 2em">✏️</span>]
|
||
|
:tip-caption: pass:[<span style="font-size: 2em">💡</span>]
|
||
|
:warning-caption: pass:[<span style="font-size: 2em">⚠</span>]
|
||
|
:toc:
|
||
|
:toclevels: 6
|
||
|
|
||
|
// btop, 2021, c++
|
||
|
// bat, 2018, rust
|
||
|
// helix, 2020, rust
|
||
|
// zoxide, 2020, rust
|
||
|
// starship, 2019, rust
|
||
|
// difftastic, 2018, rust
|
||
|
// git-delta, 2019, rust
|
||
|
// nushell, 2018, rust
|
||
|
// hyperfine, 2018, rust
|
||
|
// sd, 2018, rust
|
||
|
// tre, 2019, rust
|
||
|
// typst, 2019, rust
|
||
|
// yazi, 2024, rust
|
||
|
// fd, 2017, rust
|
||
|
// ripgrep, 2016, rust
|
||
|
// ast-grep, 2022, rust
|
||
|
// pueue, 2015, rust
|
||
|
// diskonaut, 2020, rust
|
||
|
// broot, 2018, rust
|
||
|
// just, 2016, rust
|
||
|
// zellij, 2020, rust
|
||
|
// scc, 2018, go
|
||
|
// fzf, 2013, go
|
||
|
// lazygit, 2018, go
|
||
|
// grex, 2019, rust
|
||
|
// micro, 2016, go
|
||
|
// oh-my-posh, 2019, go
|
||
|
// nnn, 2016, c
|
||
|
// qalculate, 2016, c++
|
||
|
// eza/exa, 2014, rust
|
||
|
// lsd, 2018, rust
|
||
|
// neovim, 2015, c
|
||
|
|
||
|
// cat, cd, rm, cp, man was included in the first version of unix, in 1971
|
||
|
// ls specifically can trace its history to 1961 (https://tldp.org/LDP/LG/issue48/fischer.html)
|
||
|
// vi was made in 1976
|
||
|
// sed in 1974
|
||
|
// awk in 1985
|
||
|
// bc in 1975
|
||
|
// diff in 1974
|
||
|
// make in 1976
|
||
|
// vim in 1991
|
||
|
// ssh in 1995
|
||
|
// midnight commander in 1994
|
||
|
// rust 1.0 in 2015
|
||
|
|
||
|
The terminal has been a staple of computer user interfaces since before computer monitors were available,
|
||
|
with some of the first computers offering an interactive mode in the late 1950's.
|
||
|
The 'modern' Linux terminal traces its linage to the very first version of Unix, in 1971.
|
||
|
Many utilities that a Linux user uses every day,
|
||
|
commands like `rm`, `cat`, `cd`, `cp`, `man` and a host of other core commands trace their initial versions to this first version of Unix.
|
||
|
Other tools are a bit newer, such as `sed` (1974), `diff` (1974) `bc` (1975), `make` (1976) or `vi` (1976).
|
||
|
There where a few more tools introduced in the 90's, such as `vim` (1991) and `ssh`, (1995), but you get the picture.
|
||
|
The majority of the foundational CLI tools on a Linux pc, even one installed yesterday, are older than Linux itself is.
|
||
|
|
||
|
== Ok, so?
|
||
|
|
||
|
Now, theres nothing wrong with this, the tools work fine still, but,
|
||
|
in the half-century since they were first written,
|
||
|
Terminals, users, and the broader linux ecosystem have all changed.
|
||
|
Terminals now have capacity to display more colours, Unicode symbols, and even inline images.
|
||
|
TODO: how have things changed?
|
||
|
|
||
|
Additionally, and perhaps more importantly, our knowledge has expanded,
|
||
|
our knowledge of user interfaces,
|
||
|
of what works and what doesnt,
|
||
|
of what usecases are common and what usecases are niche,
|
||
|
and the value of documentation that is easy to find and digest.
|
||
|
|
||
|
== The revival of the terminal
|
||
|
|
||
|
In recent years, Ive noticed a resurgence in development of command line utilities.
|
||
|
Instead of just developing tools that dont exist,
|
||
|
Ive noticed that people are remaking, rethinking, tools that have existed since the early days of Unix.
|