Perché bash non memorizza i comandi che iniziano con gli spazi?


49

Se eseguo una sequenza di comandi come:

$ ls
$ grep abc file.txt

e quindi usa il tasto freccia su per ottenere il precedente, il terminale mostrerà l'ultimo cmd (che è il grepqui)

Ma se faccio qualcosa del genere:

$ ls
$   grep abc file.txt

dove grepè preceduto da spazi, premendo su dà ls, no grep.

Perchè è questo?


Risposte:


53
echo $HISTCONTROL
ignoreboth

uomo bash:

HISTCONTROL

Un elenco di valori separato da due punti che controlla il modo in cui i comandi vengono salvati nell'elenco della cronologia. Se l'elenco di valori include ignorespace, le righe che iniziano con un carattere spazio non vengono salvate nell'elenco cronologico. Un valore di ignoredupscausa non consente il salvataggio delle righe corrispondenti alla voce della cronologia precedente. Un valore di ignorebothè una scorciatoia per ignorespacee ignoredups.


3
ed HISTCONTROLè impostato ignorebothsul valore predefinito ~/.bashrcfornito da debianalmeno.
Stéphane Chazelas,

1
Qual è il caso d'uso di ignorespace?
Ciro Santilli 28 改造 中心 法轮功 六四 事件

1
In Ubuntu 14.04 il valore predefinito è piuttosto ignorebothfastidioso.
Nick Gammon,

6
Ciro, suppongo che sia così che tu possa inserire il comando come echo "drop database mydb" | mysql -u root -pPassworde non averlo salvato nella storia.
Jeremy,

2
Per gli utenti Mac, HISTCONTROL non è impostato su nulla, quindi dovrai aggiungerlo al tuo bash_profile o simile - unix.stackexchange.com/questions/115917/…
chrismarx il
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.