Esegui il comando in bash senza salvare nella cronologia


Risposte:


54

Aggiungi spazio prima del comando. i comandi che iniziano con uno spazio non vengono inseriti nella cronologia:

root@ubuntu-1010-server-01:~# echo foo
foo
root@ubuntu-1010-server-01:~# history 
    1  echo foo
    2  history 
root@ubuntu-1010-server-01:~#  echo bar
bar
root@ubuntu-1010-server-01:~# history 
    1  echo foo
    2  history 

uomo bash

  HISTCONTROL
         A  colon-separated  list of values controlling how commands are
         saved on the history list.  If  the  list  of  values  includes
         ignorespace,  lines  which begin with a space character are not
         saved in the history list.  A value of ignoredups causes  lines
         matching  the  previous history entry to not be saved.  A value
         of ignoreboth is shorthand for ignorespace and  ignoredups.   A
         value  of erasedups causes all previous lines matching the cur
         rent line to be removed from the history list before that  line
         is  saved.   Any  value  not  in the above list is ignored.  If
         HISTCONTROL is unset, or does not include a  valid  value,  all
         lines  read  by the shell parser are saved on the history list,
         subject to the value of HISTIGNORE.  The second and  subsequent
         lines  of a multi-line compound command are not tested, and are
         added to the history regardless of the value of HISTCONTROL.

1
Meglio della mia risposta di $ HISTIGNORE sarebbe stata. +1
Matt Simmons,

1
impara qualcosa di nuovo ogni giorno.
David Rickman,

1
Di solito lo imposto /etc/profilecome HISTCONTROL=ignorebothed esporto la variabile HISTCONTROL.
ewwhite,

Questo non sembra funzionare per me? Sembra scrivere nella storia, ma includere solo lo spazio di fronte. 486 echo test 487 history 488 echo testpace 489 history
Peter

Ignora l'ultimo commento, sembra che funzioni in Ubuntu ma non in Debian / altri sistemi operativi.
Peter,

3

Vale anche la pena menzionare il trucco per uccidere la sessione di accesso corrente invece della normale uscita (quindi non dare la possibilità di salvare la cronologia). Ciò è particolarmente utile quando si accede a un a / c condiviso, invece di ricordare di aggiungere un prefisso con uno spazio, è possibile terminare la sessione semplicemente uccidendolo. Il modo più semplice per uccidere è eseguendo questo comando:

kill -9 0

Il Pid 0 si riferisce sempre al PID del processo corrente, quindi in sostanza stai inviando un segnale mortale di uccisione a se stesso. Inoltre lo uso spesso invece di uscire normalmente, poiché spesso ho sospeso le sessioni all'uscita normale, probabilmente a causa di una configurazione errata.


1

Un'altra soluzione è impostare il file cronologico su una directory:

export HISTFILE=/
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.