it-swarm-tr.com

.Bash_history içindeki yinelenen girişleri nasıl önleyebilirim?

Aynı komut geçmişimde tekrar tekrar listeleniyor. Bundan nasıl kaçınabilirim? Bunun HISTCONTROL üzerinden mümkün olduğunu biliyorum ama doğru yolu bulamadım.

107
karthick87

bash man sayfasından:

HISTCONTROL

Komutların geçmiş listesine komutların nasıl kaydedildiğini kontrol eden, iki noktalardan ayrılmış bir değerler listesi. Değerler listesi ignorespace içeriyorsa, boşluk karakteriyle başlayan satırlar geçmiş listesine kaydedilmez. ignoredups değeri, önceki geçmiş girişiyle eşleşen satırların kaydedilmemesine neden olur. ignoreboth değeri, ignorespace ve ignoredups için kısa yoldur. erasedups değeri, geçerli satırla eşleşen önceki tüm satırların, o satır kaydedilmeden önce geçmiş listesinden kaldırılmasına neden olur. Yukarıdaki listede olmayan herhangi bir değer göz ardı edilir. HISTCONTROL ayarlanmamışsa veya geçerli bir değer içermiyorsa, Shell ayrıştırıcı tarafından okunan tüm satırlar HISTIGNORE değerine bağlı olarak geçmiş listesine kaydedilir. Çok hatlı bir bileşik komutun ikinci ve sonraki satırları test edilmez ve HISTCONTROL'ün değerinden bağımsız olarak geçmişe eklenir.

Öyleyse, aşağıdaki satırı ~/.bashrc:

export HISTCONTROL=ignoreboth:erasedups

122
Isaiah

Bunu ~/.bashrc içine yapıştırın:

export HISTCONTROL=ignoredups

Bunun yerine ignoreboth kullanabilirsiniz. Bu hem ignorespaces (boşluklarla başlayan komutlar) hem de ignoredups (kopyalar) için kısaca.

Bir web sitesinden bir komut kopyaladığımda öndeki boşlukları olan komutları görmezden gelmenin varsayılan davranışını bulduğum için kendi başıma ignoredups'i tercih ediyorum ve yanlışlıkla kopyalanamadığım için kaydedilmiyor. ... Ama her biri için kendi.

23
Oli

Bunu ~/.bashrc içine koymak @ alvin'in çözümünü wlell gibi farklı oturumlarda uygulayacaktır.

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

Kaynak: Linux: Bash tarihi: “yok sayılanlar” ve “silinen” oturumlar arasında ortak tarihle çatışmayı ayarladı

10
Nour Wolf
export HISTCONTROL=erasedups
4
withoutasound

Aşağıdakileri ~/.bashrc:

export HISTCONTROL=ignoredups

Bunu yapmak için, bu komutu kullanabilirsiniz:

nano ~/.bashrc
3
jrg

Her yeni komutu benzersiz şekilde kaydetmek zordur. Öncelikle ~/.profile veya benzeri bir dosya eklemeniz gerekir:

HISTCONTROL=erasedups
Prompt_COMMAND='history -w'

O zaman ~/.bash_logout 'a eklemeniz gerekir:

history -a
history -w
0
Steven Penny