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?
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?
Yanıtlar:
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:
~/.inputrc
Ayarlama amacıyla yeni bir dosya oluşturulursarevert-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/inputrc
artık geçerli olmayacak. Bu nedenle,/etc/inputrc
dosya varsa,~/.inputrc
şu satırla başlamak iyi bir fikirdir :
$include /etc/inputrc
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ı.