____ _ _____ _ _
| _ \ ___ | |_| ___(_| | ___ ___
| | | |/ _ \| __| |_ | | |/ _ / __|
| |_| | (_) | |_| _| | | | __\__ \
|____/ \___/ \__|_| |_|_|\___|___/
Here is my Linux command line setup. I have various tools which are setup and ready to use. Feel fee to plagiarize my configuration (I have!).
I use zsh and most of my configuration is in .zshrc
.
Like many others I tailor the look and feel of zsh using Oh My Zsh, also using Powerlevel10k.
I mostly use the brilliant LunarVim.
I've used Zenburn for years now. One of the reasons I like it, is that it has been ported to most tools that support theming. So in the list that follows I've setup zenburn to be the theme used.
Here is a list of tools that I use and highly recommend.
I usually alias these to replace the traditional tools, so for example eza
becomes ls
and duf
becomes df
(note you can always use the original command if you just prefix with a backslash, i.e. \ls
)
Name | Description |
---|---|
ag | Find replacement. |
Bat | Cat with wings! |
bpyttop | top/htop replacement. System monitor. |
cht | Man page replacement. |
delta | Diff replacement, integrates well with git. |
duf | df replacement. |
Eza | ls on steroids (was exa) |
fd | Find replacement. |
fzf | Fuzzy finder |
glances | top/htop replacement. System monitor. |
gping | Ping replacement. |
httpie | curl replacement. |
jq | Viewing JSON files, although see lion below. |
Jump | Jump to directories |
Kitty | Command terminal, very powerful and configurable. |
Lunarvim | config and setup for Neovim. |
ncdu | Disc usage, but nice! |
Neovim | Editor. |
Oh My Zsh | Community-driven framework for managing your zsh configuration. |
prettyping | ping replacement. Ping but nicer! |
Ranger | Terminal file browser. |
rmtrash | Recycle files. |
Terminal Multiplexer | I used tmux for a while but when I moved over to kitty this became redundant. |
tldr | Man page replacement. |
You can find many nice replacements, here is a page with some examples: https://github.com/ibraheemdev/modern-unix
I've taken rangers scope.sh script and ran with it a little, basically I've created two shell scripts which act as a wrapper for scope and used these as an alias for cat and less.
My scope.sh is here.
This basically means if I cat a file it will run the scope script which will decide which tool is best to display the file in the terminal. So if you run cat file.ext
it will use the extension/mimetype/etc to choose as in the following table.
Extension/filetype | Tool used to display that file. |
---|---|
csv/tsv/spreadsheet | Tabulate |
fonts | fontimage from fontforge |
html | w3m |
images | icat kitten in kitty |
json | jq |
md/Markdown | See next section on catmd |
Note this list is not exhaustive.
To cat md files to the terminal I played with a few tools but none seemed to do handle tables and images etc. Then I realised that the python library rich can render Markdown, and the icat kitten in Kitty can render images. So I have mashed the two together into a little python script, catmd.
Of course I use my lion/scope mashup (previous section) aliased to cat to control this, so I just cat the file and it sorts out the best tool to render it, i.e. catmd....
Given markdown example with some text, an image and a table you get:
Key | Action |
---|---|
<Shift+F1> |
Toggle highlighting in Red of error, fatal, failed and exception. |
<Shift+F2> |
Toggle highlighting in Orange or warn and warning. |
<Shift+F3> |
Toggle highlighting in Green of info and information. |
<Shift+F4> |
All 3 groups above are highlighted. |
<Alt+\> |
Split the terminal vertically. |
<Alt+-> |
Split the terminal horizontally. |
<F5> |
Open file under cursor, e.g. if any command outputs a file name, point at it in the terminal and hit <F5> . |
<F10> |
Open a new terminal in a tab below. |
<Ctrl+Shift+Left> |
Move to left terminal tab. |
<Ctrl+Shift+Right> |
Move to right terminal tab. |