226 lines
7.2 KiB
Markdown
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` |