entity edit
Ersetzt den Fließtext einer Entität. Das Frontmatter bleibt unberührt — nur der updated-Zeitstempel wird vom Backend automatisch aktualisiert. Änderungen am Frontmatter (Typ, Sprache, Tags, eigene Felder) liegen bei entity meta, der Titel bei entity rename.
Einfachster Fall — interaktiv
apparat entity edit V1StGXRa
Apparat öffnet $EDITOR (Default: nano) auf einer Tempdatei, die mit dem aktuellen Body der Entität gefüllt ist. Du änderst, speicherst, schließt — Apparat übernimmt das Ergebnis.
Updated body of entity V1StGXRa in vault "recherche". File: /home/max/projects/apparat/vaults/recherche/content/2026-04-19--maria-beispiel--V1StGXRa.md
Wenn du speicherst, ohne etwas geändert zu haben, meldet das Kommando das explizit (und aktualisiert trotzdem den updated-Zeitstempel — jeder Aufruf gilt als bewusster Write):
No body changes on entity V1StGXRa in vault "recherche" (timestamp refreshed). File: ...
Nicht-interaktive Wege
Drei Flags für Skripte und Pipelines:
# Body inline apparat entity edit V1StGXRa --body="Neuer Fließtext." --no-interaction # Body aus einer Datei apparat entity edit V1StGXRa --body-file=neuer-body.md --no-interaction # Body aus stdin (explizit, nicht automatisch) cat body.md | apparat entity edit V1StGXRa --body-from-stdin --no-interaction
--body=...— Inhalt direkt auf der Kommandozeile.--body-file=<pfad>— Pfad zu einer Datei, deren Inhalt den Body ersetzt.--body-from-stdin— liest von stdin. Muss explizit gesetzt sein; Apparat liest stdin nicht auto-magisch, selbst wenn eine Pipe vorliegt. Das ist der bewusste Unterschied zuentity new: beieditsoll nicht versehentlich der Body geleert werden, nur weil die Shell stdin umgeleitet hat.
Ohne eine dieser drei Quellen im --no-interaction-Modus bricht das Kommando ab:
No body source in non-interactive mode: pass --body, --body-file or --body-from-stdin.
Wirkungsbereich
| Bereich | Behandlung |
|---|---|
| Body | Wird 1:1 durch den neuen Inhalt ersetzt. Keine H1-Auto-Injektion, keine Markdown-Validierung, kein Formatieren. Was du reingibst, landet so auf der Platte (modulo einheitlichem Zeilenumbruch am Ende). |
| Inline-Links | Apparat bringt Markdown-Links beim Speichern auf die kanonischen Formen ./<datei>.md bzw. ../assets/<datei>.<ext>. Zeigt ein Link auf einen alten Pfad, dessen NanoID im Vault aber noch existiert, wird der Pfad dabei still auf den aktuellen Dateinamen aktualisiert. Externe URLs (https://…, mailto:…) und reine Fragment-Links (#abschnitt) bleiben unberührt. |
| Frontmatter | Unverändert — alle Felder inklusive title, type, tags, created, Custom-Felder bleiben exakt wie sie waren. |
updated |
Wird automatisch auf den aktuellen Zeitpunkt gesetzt. Immer. |
| Dateiname | Unverändert. NanoID, Datum und Slug bleiben stehen. Wenn du den Titel ändern willst (was den Slug und damit den Dateinamen betrifft), ist entity rename das richtige Kommando. |
Vault-Auswahl
Wie bei allen Entity-Kommandos greift ohne --vault die Auto-Lokalisierung (CWD, einziger Vault, interaktive Auswahl). Explizit:
apparat entity edit V1StGXRa --vault=arbeit apparat entity edit V1StGXRa --vault=/home/max/vaults/recherche
Abgrenzung zu anderen Kommandos
entity edit arbeitet ausschließlich am Fließtext. Anders als bei entity new wird der Titel nicht automatisch als H1 gespiegelt — wenn du die Überschrift nach einem Rename nachziehen willst, machst du das gezielt im Editor. Frontmatter-Felder (Tags, Typ, Sprache, Titel) gehören zu entity meta bzw. entity rename. Die Markdown-Syntax wird nicht geprüft — ein kaputter Body landet so auf der Platte, wie du ihn speicherst; vault validate prüft Apparat-Konventionen, aber nicht die Markdown-Struktur.
Fehler
- „No entity with id "…" in vault "…"" — die NanoID existiert im gewählten Vault nicht. Prüfe mit
entity list. - „No body source in non-interactive mode: pass --body, --body-file or --body-from-stdin." — du musst im
--no-interaction-Modus eine dieser drei Quellen explizit benennen. - „Body file "…" does not exist." — der Pfad bei
--body-filezeigt ins Leere.