Právě jsem si uvědomil, že pracovní postup, který používám roky, nedělá to, co by měl. Vzhledem k tomu, že jsem si to po tak dlouhou dobu neuvědomoval, možná si myslíte, že nemá cenu tomu věnovat tolik úsilí, ale ukazuje se, že právě teď je to poněkud důležité.
o čem to mluvím? Dobře, mám tmux
běží s několika relacemi a každá relace má jiná okna a tak dále. Taková práce je úžasná. Má to však jednu nevýhodu. Když se server z jakéhokoli důvodu restartuje, zavře všechny mé relace. Slušné, nelze se mu vyhnout a nestává se to často. Nepříjemné však je, že všechny mé zsh
nebo bash
history
je také pryč. Tohle je problém. Spoléhám na svou historii, možná až příliš.
Tento problém jsem obcházel stisknutím fc -W
(v zsh
) tu a tam. Myslel jsem, že to připojí historii, která je v paměti, a pak ztratím pouze část mezi mým posledním vyvoláním fc -W
a restart serveru. Ale to není to, co dělá. Pokud použiji fc -W
v jednom okně a poté fc -W
v jiném by byla historie z prvního okna přepsána historií z druhého okna. Potřeboval bych použít fc -R
za prvé, ale to by duplikovalo celou historii... v podstatě jsem zneužil fc
komandovat celou dobu.
Zde je otázka:Jak se mohu ujistit, že neztratím žádnou svou historii, když jsem v tmux
a došlo k náhlému výpadku proudu? Poznámka:
- V případě, že na tom záleží, používám nekonečnou historii.
- Ztráta části historie je v pořádku, tj. pokud musím vyvolat příkaz ručně (nebo v cronjob) a ztratím část historie od posledního spuštění příkazu, je to v pořádku.
- Opuštění terminálu a otevření nového není řešením.
- Nechci ukládat své příkazy přímo do historie, protože to míchá různé historie.
- Řešení pro oba
bash
azsh
jsou vítáni.zsh
je preferováno.
Edit:Zvýrazněte část, které, jak se zdá, všichni nerozumí.
Přijatá odpověď:
V zsh použijte fc -AI
pro uložení vaší historie, nikoli fc -W
. Použijte -A
, nikoli -W
, jinak se historie z jiných instancí shellu přepíše. A -I
uloží pouze nové položky historie od posledního uložení.
Vzhledem k vašemu pracovnímu postupu, spíše než ruční ukládání, byste pravděpodobně měli historii ukládat automaticky. Zapněte inc_append_history
možnost uložit každý příkaz do souboru historie bezprostředně před jeho provedením.
I když je možné dosáhnout stejného efektu v bash, správné sdílení historie mezi instancemi bash je těžší. Viz Zachování historie bash ve více oknech terminálu