Bash'in tarihini değiştirmesi nasıl engellenir?


26

Klavyemdeki Yukarı veya Aşağı oklarına basıp geçmişimden bir şeyleri değiştirirsem sonsuza dek değişir. Ctrl-C tuşlarına basıp sonra tekrar açmayı denesem bile, yine de değişti - tarihimdeki bu girişi kaybettim.

Bunun olmasını nasıl önleyebilirim?


3
Bu sorunun başlığını seviyorum. Aslında tarihi değiştirebilirsin ve şikayet ediyorsun? Neyin var?!
Daniel Beck

@Daniel: Lol, evet ... Yani, sanki geçmişimi değiştiriyormuşum gibi. Açıkça saçma ve bir süre sonra gülünç sinir bozucu olur . : \
Mehrdad

BTW, bunun yerine history-search-xxx kullanıyorsanız, davranış farklıdır. Belki bu senin için bir şeydir?
Daniel Beck

@Daniel: Bu gerçekten yararlı - çok teşekkürler. Ama yine de, bu sorunun cevabını bilmek isterim, çünkü bazen komutlar birbirine çok benzemiyor ve bu işe yaramıyor.
Mehrdad

Boş bir bilgi istemi ile yapılan tarih taraması normal tarihin önceki / sonraki gibi çalışır, yani tüm girdileri görüntüler.
Daniel Beck

Yanıtlar:


17

Readline ayarını istiyorsun:

set revert-all-at-newline on

Ya içine koyabilir ~/.inputrc(aşağıdaki nota bakınız) ya da içine bind 'revert-all-at-newline on'yazabilirsiniz ~/.bashrc.

Demo:

$ man bash
$ bind 'set revert-all-at-newline on'
$ man bsh # up arrow and edit
No manual entry for bsh
$ man bash # three up arrows

Daha fazla detay Bash man sayfasındadır :

revert-all-at-newline

' on' Olarak ayarlanırsa , Readline kabul edildiğinde dönmeden önce Readline geçmiş satırlarındaki tüm değişiklikleri geri alır. Varsayılan olarak, geçmiş satırları değiştirilebilir ve okumalar için çağrılar arasında tek tek geri alma listelerini tutabilir. Varsayılan değer ' off'.


Not:

~/.inputrcAyarlama amacıyla yeni bir dosya oluşturulursa revert-all-at-newline, bash'nin dosyada olabilecek herhangi bir ayar yerine bu satırdaki okuma satırı ayarlarını kullanacağını unutmayın /etc/inputrc. Başka bir deyişle, belirtilen ayarlar /etc/inputrcartık geçerli olmayacak. Bu nedenle, /etc/inputrcdosya varsa, ~/.inputrcşu satırla başlamak iyi bir fikirdir :

$include /etc/inputrc


Harikasın, tam ihtiyacım olan şey buydu. Artık monitörüme dokunmak istemiyorum. : D +1000000 (keşke)
Mehrdad

5

Giriyorum:

ls /tmp

- olağanüstü. Şimdi girmek istemiyorum

ls /temp 

ve tarihe girmesini engelleyebilir, bu nedenle komutu boş bir şekilde başlatırsam, ls / tmp'nin üzerine yazmasını engelleyebilir:

 ls /temp

Görmesi zor, ama eğer biliyorsan ...

Tarafından kontrol edilir

export HISTCONTROL=ignoredups
export HISTCONTROL=ignoreboth

yok sayılanlar yalnızca yinelenen komutları yok sayar, görmezden gelinirse satırın başındaki boşlukları yok sayar; bu, aksi takdirde yasaklanmayan parolaları gizlemek için yararlıdır.

Ama belki de, her iki komutla, değiştirilmemiş eskisi ve yenisiyle bittiği bir çözüm için dışarı çıkıyorsun. Bash veya ayarlar sürümüm böyle davranıyor, ama bilmiyorum, seninkinden farklı olanı.


Ha; Her zaman komutları baştaki boşluklarla kaydetmemenin bir hata olduğunu varsaydım. Teşekkürler. :)
sarnold
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.