.bash_history içinde yinelenen girişler nasıl engellenir

87

Aynı komut, geçmişimde tekrar tekrar listeleniyor. Bundan nasıl kurtulabilirim? % Co_de% yoluyla mümkün olduğunu biliyorum ancak doğru yolu bulamadım.

    
sordu karthick87 02.12.2010 21:05

6 cevap

98

bash man sayfasından:

  

HISTCONTROL

     
    

Komutların nasıl kaydedildiğini kontrol eden kolonlarla ayrılmış bir değerler listesi     tarih listesi Değerlerin listesi ignorespace , satırları içeriyorsa     Bir boşluk karakteri ile başlayan tarih, geçmiş listesine kaydedilmez. bir     % co_de değerinin değeri, önceki geçmiş girişi ile eşleşen satırlara neden oluyor     kaydedilmeyecek. % Co_de% değeri, ignoredups için kısa yoldur ve     % Co_de%. % Co_de% değeri, önceki tüm satırların eşleşen     o satırın öncesindeki geçmiş listesinden kaldırılacak geçerli satır     kaydedildi. Yukarıdaki listede olmayan herhangi bir değer göz ardı edilir. HISTCONTROL ise     unset, veya geçerli bir değer içermiyor, kabuk tarafından okunan tüm satırlar     ayrıştırıcı, HISTIGNORE değerine bağlı olarak tarih listesine kaydedilir.     Çok satırlı bir bileşik komutun ikinci ve sonraki satırları değil     HISTCONTROL değeri ne olursa olsun test edilmiş ve tarihe eklenmiştir.

  

Yani şu satırı ignoreboth dosyanıza koyun:

ignorespace

    
verilen cevap Isaiah 02.12.2010 21:09
20

Bunu ~/.bashrc dosyanıza yapıştırın:

export HISTCONTROL=ignoredups

Bunun yerine ignoreboth kullanabilirsiniz. Bu, ignorespaces (boşluklarla başlayan komutlar) ve ignoredups (duplicates) için kestirilir.

ignoredups 'i tercih ediyorum, çünkü bir web sitesinden bir komutu kopyaladığımda ön planda boşluklarla görmezden gelme komutlarını görmezden gelme davranışını buluyorum ve yanlışlıkla bir boşlukta kopyalandığım için kaydedilmiyor .... Ama her biri kendi.

    
verilen cevap Oli 02.12.2010 21:10
7

Bunu ~/.bashrc dizinine koymak, @ alvin'in çözümünü, wlell olarak farklı oturumlarda uygular.

HISTCONTROL=ignoredups:erasedups
shopt -s histappend
PROMPT_COMMAND="history -n; history -w; history -c; history -r; $PROMPT_COMMAND"

Kaynak: Linux: Bash history: "ignoredups" ve "erasedups", oturumlar arasında ortak geçmişle çelişiyor.

    
verilen cevap Nour Chawich 31.08.2015 17:44
4
export HISTCONTROL=erasedups
    
verilen cevap withoutasound 03.12.2010 03:29
3

Aşağıdakileri ~/.bashrc dosyanıza ekleyin:

export HISTCONTROL=ignoredups

Bunu yapmak için şu komutu kullanabilirsiniz:

nano ~/.bashrc
    
verilen cevap jrg 02.12.2010 21:11
0

Her yeni komutu kesin olarak kaydetmek zor. İlk olarak eklemeniz gerekir ~/.profile veya benzer:

HISTCONTROL=erasedups
PROMPT_COMMAND='history -w'

Ardından, ~/.bash_logout dosyasına eklemeniz gerekiyor:

history -a
history -w
    
verilen cevap Steven Penny 04.02.2018 19:42

Etiketlerdeki diğer soruları oku