---
title: "Knowledge Base"
---

# Linux Knowledgebase

This is a list of quickstart guides for Linux programs, designed to get the user up and running as fast as possible.

# Style

## Praxis Only

We leave theory alone as much as possible.
The documentation should be of the form 'if you want *X*, type *Y*'.

We don't need to explain what a program does - anyone looking up 'how to X', already knows what they want to do.
We don't even need to explain which program to use - if someone wants to combine an mp4 and webm video into a single video file, they only care about that result, not about learning `ffmpeg`.

Any interest in these tools only comes after we can use them.

## Chronological

Entries should read like scripts - everything in the right order, with small notes on what this does.

The chronology should never branch.
If `gitea` can use three different types of database, the documentation should simply pick one and continue instructions from there.
Repetition works better than a reference - if a database requires three commands to set up, it's better to repeat those three commands for every program that requires a database than to just link to another file which discusses databases.

---

### Closing

Introductory documents should show anything required to cleanly uninstall a program, without leaving bulky configuration files behind.

## Three Input Types

There are three types of examples:

Fixed input:

```bash
ls
```

Anything with arbitrary input should be shown as a variable.

```bash
ls $FILE
```

Non-commands (e.g. output) should be shown as quoted text:

> LK           img
> Mail         kn
> Projects     music

---

# Example

```
How to see which websites you're actively accessing:

` ` `bash
ss -tr dst :$PORT
` ` `   

> State  Recv-Q  Send-Q   Local Address:Port     Peer Address:Port   Process  
> ESTAB  0       0         192.168.0.14:42476  149.154.167.91:https           
> ESTAB  0       0         192.168.0.14:43644   104.17.90.199:https           

```

# What's wrong with everything else?

## Man pages

- Orders items by the alphabet rather than by relevance.
- Often presumes you know everything except that one program.
- Often written in the 80's, and it shows.
- Zero respect for your time.

## curl cheat.sh/

- Doesn't have the programs I like.
- Too short to get you started on many programs.
- Poor understanding of priority (`git stash` is covered before `git commit`).

# Current State

This started as a few personal notes, and will probably continue to look like that for some time.
It's a bit of a mess.

Systemd is taken as a default.
Non-systemd commands are mentioned when required for a distro, e.g. runit for Void Linux.