GNU/Linux >> Znalost Linux >  >> Linux

Archivovat historii bez opuštění Shell?

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 a zsh 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í.

Související:BASH skript:Jak přiřadit každý řádek výstupu příkazu hodnotám v poli?

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


Linux
  1. Přednost logických operátorů Shell &&, ||?

  2. Chápete význam `$_`?

  3. Zkažená historie?

  1. Moc (Shell) lidem

  2. Jak restartovat prostředí GNOME z příkazového řádku bez ukončení aplikací (pouze X11)

  3. Jak na to:Neomezená historie Bash/shell?

  1. Přizpůsobení prostředí Bash

  2. Jak provést příkaz v prostředí Shell bez jeho uložení do historie? [Tipy pro Linux]

  3. Pointa externího příkazu `cd`?