GNU/Linux >> Znalost Linux >  >> Linux

Jak zakázat úpravu mé historie v bash

Nějak se mi podaří ovlivnit původní příkaz, tj. moje úprava nahradí původní příkaz zpět v historii.

Že jo. Pokud se vrátíte do historie a upravíte řádek bez stisknutím klávesy return provedete příkaz, ale místo toho jste přešli na jinou položku historie, právě jste upravili zápis do historie. Pokud potom vypíšete svou historii, uvidíte * na řádku označujícím, že jste jej upravili. Tuto "funkci" považuji za nesmírně frustrující. Jiní poskytli dobré příklady, jak to reprodukovat.

Mým cílem je se tomu vyhnout, takže jakákoli úprava předchozího příkazu se vždy připojí k historii a nikdy nenahradí původní.

Taky jsem to chtěl vypnout. Našel jsem řešení prostřednictvím této odpovědi na unix.stackexchange.

Abych to shrnul, musíte povolit revert-all-at-newline readline nastavení, které je ve výchozím nastavení vypnuto. Pokud je toto nastavení zapnuto, bash při provedení dalšího příkazu vrátí všechny změny, které jste provedli v historii.

Chcete-li povolit toto nastavení ve vašem prostředí, měli byste do ~/.inputrc přidat následující soubor a poté restartujte shell:

$include /etc/inputrc
set revert-all-at-newline on

První řádek je potřeba, protože předpokládám, že pokud zadáte svůj vlastní .inputrc zadejte výchozí /etc/inputrc soubor není zahrnut, což pravděpodobně není to, co chcete.


Pokud se vrátíte k některému předchozímu příkazu a upravíte jej, ale pak jej NEPROVEDETE (místo použití příkazů historie k přechodu na jiný příkaz a jeho provedení), úpravy tam zůstanou ve vašem seznamu historie.

Stiskněte Ctrl + C , po úpravě se tomuto chování brání. Původní příkaz ponechá v platnosti, tj. zruší zapamatování úprav originálu.


Zde je moje vlastní odpověď. Pokud můžete, opravte ji nebo uveďte další podrobnosti.

Když je v bash nastavena možnost "vi" ("set -o vi" -- "Použít rozhraní pro úpravu příkazového řádku ve stylu vi"), existují dva režimy úpravy příkazu z historie.

První režim (říkejme mu „základní“) je, když začnete okamžitě upravovat pomocí kláves Backspace, Del a znakových kláves.

Druhým režimem je „režim vi“, který se zadává po stisknutí klávesy Esc.

Pokud chcete zachovat svou historii nedotčenou, NEPOUŽÍVEJTE oba režimy ve stejné úpravě. Nevím, jak bash přesně funguje, ale můžete si to představit takto:

  1. Zadáním „režimu vi“ se na původní příkaz použijí všechny změny provedené v „základním režimu“ a vytvoří se kopie příkazu, kterou můžete dále upravovat pomocí příkazů ve stylu vi.
  2. Změny se projeví, když stisknete klávesu Enter (spustit), Nahoru, Dolů nebo j,k (přechod na jiný příkaz v historii).
  3. Pokud stisknete Ctrl-C, změny se neprojeví.
  4. SAMOTNÉ použití základních úprav nebo úprav ve stylu vi neovlivní původní příkaz v historii.

Linux
  1. Jak spravovat historii příkazů Linuxu

  2. CentOS / RHEL :Jak zakázat historii shellu BASH

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

  1. Jak používat příkaz historie v Linuxu

  2. Jak vymazat historii Bash na Linuxu

  3. Jak uložit + zavřít soubor při úpravách v bash?

  1. Jak používat příkazy historie Bash

  2. Jak vymazat historii příkazového řádku BASH v Linuxu

  3. Jak vymazat konkrétní příkaz z historie Bash v Linuxu