Files
silverbullet/IT/Cheatsheet.md
2026-02-15 12:57:51 +01:00

226 lines
7.2 KiB
Markdown

# 💻 CLI Cheatsheet: Git, Linux & Neovim
Eine zentrale Referenz für Befehle, Shortcuts und Workflows.
---
# 🐙 Git (Version Control)
#### ♻️
**Merkregel:** Git speichert Snapshots, nicht nur Deltas.
Working Dir (Lokal) -> Staging Area (Vorbereitung) -> Repository(Commit).
### 🔄 Basis-Workflow
| Befehl | Beschreibung |
| :--- | :--- |
| `git status` | Zeigt den aktuellen Zustand (geänderte/neue Dateien). |
| `git add .` | Fügt **alle** Änderungen zur Staging-Area hinzu. |
| `git add -p` | Interaktives Staging (Hunks einzeln auswählen). |
| `git commit -m "msg"` | Erstellt einen Snapshot (Commit) mit Nachricht. |
| `git push` | Synchronisiert lokale Commits zum Remote-Server. |
| `git pull` | Holt Änderungen vom Server und merged sie. |
### ↩️ Undo & Rettungsanker
| Befehl | Beschreibung |
| :--- | :--- |
| `git checkout .` | **Gefährlich:** Verwirft alle lokalen Änderungen an Dateien. |
| `git reset --soft HEAD~1` | Macht den letzten Commit rückgängig, behält Änderungen aber im Staging. |
| `git commit --amend` | Fügt Änderungen zum *letzten* Commit hinzu (History Rewrite!). |
| `git stash` | Verschiebt Änderungen temporär auf einen Stack (Arbeitsverzeichnis sauber). |
| `git stash pop` | Holt Änderungen vom Stack zurück. |
| `git log --oneline --graph` | Zeigt den Commit-Baum visuell an. |
#### ‼️
git reset --hard HEAD~1
Löscht den letzten Commit und alle darin enthaltenen Änderungen unwiderruflich. Reset auf den Zustand davor.
---
# 🐧 Linux / Bash (Shell)
### 📂 Datei- & Ordner-Operationen
| Befehl | Beschreibung |
| :--- | :--- |
| `ls -lah` | Listet alles (all), ausführlich (long), menschenlesbar (human). |
| `cp -r src dest` | Kopiert Ordner rekursiv (`-r`). |
| | `--progress` für Fortschrittsanzeige. |
| `rsync -av src/ dest/` | Synchronisiert Ordner (besser als cp, behält Rechte/Zeitstempel). |
| `mkdir -p a/b/c` | Erstellt ganze Ordner-Pfade (parents). |
| `du -sh folder` | Zeigt die Speicherbelegung eines Ordners (`disk usage`). |
| `chmod +x file.sh` | Macht eine Datei ausführbar (e**x**ecutable). |
### 🔍 Suchen & Filtern (Grep & Find)
| Befehl | Beschreibung |
| :--- | :--- |
| `grep -r "Text" .` | Sucht "Text" rekursiv im aktuellen Verzeichnis. |
| `grep -Fw "IP" file` | Sucht nach fixem String (`-F`) und ganzem Wort (`-w`). |
| `find . -name "*.conf"` | Sucht Dateien anhand des Namens. |
| `find . -size +100M` | Findet Dateien größer als 100 MB. |
| `history | grep "befehl"` | Durchsucht die eigene Befehls-Historie. |
### ⚙️ System & Prozesse
| Befehl | Beschreibung |
| :--- | :--- |
| `htop` / `btop` | Interaktiver Prozess-Manager (CPU/RAM). |
| `ps aux (pipe) grep [app]` | Zeigt spezifische laufende Prozesse. |
| `kill -9 [PID]` | Beendet Prozess hart (SIGKILL). |
| `systemctl status [dienst]` | Prüft Status eines Service (z.B. docker, sshd). |
| `journalctl -xe` | Zeigt System-Logs (bei Fehlern). |
---
# ⛵ Neovim (NVIM)
#### ⚠️
**Modi:** ESC = Normal (Bewegen), i = Insert (Schreiben), v = Visual (Markieren).
### 🏃 Navigation (Muscle Memory)
| Taste | Bewegung |
| :--- | :--- |
| `h` `j` `k` `l` | Links, Runter, Hoch, Rechts. |
| `w` / `b` | Wort vorwärts / Wort rückwärts. |
| `0` / `$` | Zeilenanfang / Zeilenende. |
| `gg` / `G` | Dateianfang / Dateiende. |
| `Ctrl + u` / `d` | Seite hoch / Seite runter (Up/Down). |
| `/suchbegriff` | Suche (n = weiter, N = zurück). |
### ✏️ Editieren (Normal Mode)
| Taste | Aktion |
| :--- | :--- |
| `u` / `Ctrl + r` | Undo / Redo. |
| `dd` | Zeile ausschneiden (löschen). |
| `yy` | Zeile kopieren (yank). |
| `p` | Einfügen (paste) nach Cursor. |
| `ciw` | "Change Inner Word" (Löscht Wort unter Cursor & wechselt zu Insert). |
| `A` | Springt ans Zeilenende & wechselt zu Insert (Append). |
| `o` | Neue Zeile unterhalb einfügen & Insert. |
### 💾 Ex-Kommandos (`:`)
| Befehl | Aktion |
| :--- | :--- |
| `:w` | Speichern. |
| `:q!` | Schließen ohne Speichern (Force). |
| `:wq` | Speichern & Schließen. |
| `:%s/old/new/g` | Suchen & Ersetzen in ganzer Datei. |
| `:vsp file` | Vertikaler Split (Fensterteilung). |
---
## 🔐 SSH & Netzwerk
| Befehl | Beschreibung |
| :--- | :--- |
| `ssh user@ip` | Verbindet zum Server. |
| `ssh -p 2222 user@ip` | Verbindet auf spezifischem Port. |
| `ssh-copy-id user@ip` | Kopiert den Public Key auf den Server (Passwortloses Login). |
| `ip a` | Zeigt eigene IP-Adressen und Interfaces. |
| `ss -tulpn` | Zeigt offene Ports und lauschende Dienste (Sockets). |
# ledger
1\. Core Syntax: The Journal Entry
Every transaction must satisfy the **Accounting Equation** (AE) where the sum of all postings equals zero (∑\=0).
Code snippet
```
YYYY-MM-DD [Status] Description
Account:Name:Subaccount [Amount] [Unit]
Account:Other:Subaccount [Amount] [Unit]
```
* **Indentation:** At least two spaces for postings.
* **Status Marks:** `*` for **Cleared** (C), `!` for **Pending** (P).
* **Automatic Balancing:** You can leave **one** amount blank; the system calculates the remainder to maintain equilibrium.
---
## 2\. Account Types (Standard Hierarchy)
| Category | Account Prefix | Normal Balance | Physics Analogy |
| --- | --- | --- | --- |
| **Assets** | `assets:` | Debit (+) | Potential Energy (Stored) |
| **Liabilities** | `liabilities:` | Credit (-) | External Tension (Debt) |
| **Equity** | `equity:` | Credit (-) | System Origin / Initial State |
| **Income** | `income:` | Credit (-) | Energy Inflow (Flux) |
| **Expenses** | `expenses:` | Debit (+) | Energy Dissipation (Entropy) |
Export to Sheets
---
## 3\. Advanced Notation
### Comments and Metadata
* `;` or `#` or `%` starts a comment.
* `; tag: value` defines metadata for custom filtering.
### Balance Assertions (BA)
Force the system to validate the state at a specific point in time.
Code snippet
```
2026-02-11 * Grocery Store
expenses:food $50.00
assets:checking $-50.00 == $1000.00 ; Fails if balance != $1000
```
### Commodities and Prices
Define exchange rates between different units (e.g., Currency or Stocks).
Code snippet
```
P 2026-02-11 15:00:00 AAPL $230.00 ; Price of 1 AAPL in USD
```
---
## 4\. Command Line Interface (CLI) Quick Ref
| Goal | Command | Key Flags |
| --- | --- | --- |
| **Current Totals** | `hledger bal` | `-p` (period), `-R` (real) |
| **Transaction Log** | `hledger reg` | `-W` (weekly), `-M` (monthly) |
| **Verify Integrity** | `hledger check` | Useful after git pull |
| **Interactive UI** | `hledger-ui` | `--watch` (auto-reload on save) |
| **Export Data** | `hledger print` | `-o file.csv` |
Export to Sheets
---
## 5\. hledger-Specific Features
Unlike the original **Ledger** (LGR), **hledger** (HLGR) includes specialized directives:
* **`account`**: Define account properties.
* **`alias`**: Rename accounts on the fly.
* **`include`**: Modularize your journal (e.g., `include 2025.journal`).
---
## 6\. Workflow: Git + hledger
Since your journal is plain text, use this workflow to maintain a **Distributed Ledger** (DL):
1. **Edit:** Update your `.journal` file.
2. **Verify:** Run `hledger check`.
3. **Commit:** `git commit -am "Update transactions"`
4. **Sync:** `git pull --rebase && git push`