GNU/Linux >> Linux Esercitazione >  >> Linux

Come disabilitare la modifica della mia cronologia in bash

In qualche modo riesco a influenzare il comando originale, ovvero la mia modifica sostituisce il comando originale nella cronologia.

Destra. Se torni indietro nella cronologia e modifichi la riga senza premendo Invio per eseguire il comando ma spostandoti invece su un'altra voce della cronologia, hai appena modificato la voce della storia. Se poi elenchi la cronologia, vedrai un * sulla riga che indica che l'hai modificato. Trovo questa "caratteristica" immensamente frustrante. Altri hanno fornito buoni esempi di come riprodurlo.

Il mio obiettivo è evitarlo, quindi qualsiasi modifica a un comando precedente viene sempre aggiunta alla cronologia e non sostituisce mai l'originale.

Anch'io volevo disabilitarlo. Ho trovato la soluzione tramite questa risposta su unix.stackexchange.

Per riassumere, devi abilitare il revert-all-at-newline readline che è disattivata per impostazione predefinita. Se l'impostazione è attiva, bash annullerà tutte le modifiche apportate alla cronologia quando eseguirai il comando successivo.

Per abilitare questa impostazione nella tua shell, dovresti aggiungere quanto segue al tuo ~/.inputrc file e riavvia la tua shell:

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

La prima riga è necessaria perché immagino che se fornisci il tuo .inputrc archiviare il /etc/inputrc predefinito file non è incluso, il che probabilmente non è quello che desideri.


Se torni a un comando precedente e lo modifichi, ma poi NON lo esegui (usa invece i comandi della cronologia per andare a qualche altro comando ed eseguirlo), le modifiche rimarranno lì nell'elenco della cronologia.

Premendo Ctrl + C , dopo la modifica, contrasta questo comportamento. Lascia intatto il comando originale, ovvero annulla il ricordo delle modifiche all'originale.


Ecco la mia risposta, per favore correggi o fornisci maggiori dettagli se puoi.

Quando l'opzione "vi" è impostata in bash ("set -o vi" -- "Usa un'interfaccia di modifica della riga di comando in stile vi"), ci sono due modalità di modifica di un comando dalla cronologia.

La prima modalità (chiamiamola "base") è quando inizi a modificare immediatamente usando Backspace, Canc e i tasti dei caratteri.

L'altra modalità è la "modalità vi", inserita quando premi Esc.

Se vuoi mantenere intatta la cronologia, NON utilizzare entrambe le modalità nella stessa modifica. Non so come funzioni esattamente bash, ma puoi pensarla in questo modo:

  1. L'inserimento della "modalità vi" applica tutte le modifiche apportate in "modalità base" al comando originale e crea una copia del comando che puoi modificare ulteriormente utilizzando i comandi in stile vi.
  2. Le modifiche vengono applicate quando premi Invio (esegui), Su, Giù o j,k (vai a un altro comando nella cronologia).
  3. Le modifiche non vengono applicate se premi Ctrl-C.
  4. L'utilizzo SOLO dell'editing di base o in stile vi non influisce sul comando originale nella cronologia.

Linux
  1. Come cancellare la cronologia di Bash su Linux

  2. Come cancellare un comando specifico dalla cronologia di Bash in Linux

  3. Come gestire la cronologia dei comandi di Linux

  4. CentOS / RHEL:come disabilitare la cronologia della shell BASH

  5. Procedura:cronologia Bash/shell illimitata?

Come disabilitare SElinux su CentOS 7

Come abilitare il timestamp nell'output del comando della cronologia di Linux

Comando della cronologia in Linux (Cronologia di Bash)

Come visualizzare la cronologia di Bash senza numeri di riga

Come abilitare il timestamp nella cronologia di Bash in Linux

Come rimuovere un comando dalla cronologia in Linux