Eğer koşarsam history, en son yürütülen komutlarımı görebiliyorum.
Ama yaparsam tail -f $HISTFILEveya tail -f ~/.bash_historylistelenmezler.
Dosya kilitlenir mi, geçici bir yer veya benzeri bir şey var mı?
Eğer koşarsam history, en son yürütülen komutlarımı görebiliyorum.
Ama yaparsam tail -f $HISTFILEveya tail -f ~/.bash_historylistelenmezler.
Dosya kilitlenir mi, geçici bir yer veya benzeri bir şey var mı?
Yanıtlar:
Bash, komutların listesini çalışırken dahili olarak bellekte tutar. .bash_historyÇıkışta yazılır :
Etkileşimli bir kabuk çıktığında, son $ HISTSIZE satırları geçmiş listesinden $ HISTFILE adlı dosyaya kopyalanır.
Komut geçmişini yazmaya zorlamak istiyorsanız, aşağıdaki komutu kullanabilirsiniz history -a:
Yeni geçmiş satırlarını (geçerli Bash oturumunun başlangıcından beri girilen tarih satırları) geçmiş dosyasına ekleyin.
Bir -wseçenek de var:
Geçerli geçmişi tarihçeye yaz.
tarihinizi tam olarak nasıl kullandığınıza bağlı olarak size daha uygun olabilir.
Her zaman derhal yazıldığından emin olmak istiyorsanız, bu komutu PROMPT_COMMANDdeğişkeninize ekleyebilirsiniz :
export PROMPT_COMMAND='history -a'
(Cevap değil ama yorum ekleyemiyorum)
Yalnızca .bash_historybelirli bir komutu silmek istediğinizden (örneğin, açık bir şifre içeren) kontrol ediyorsanız, bellekteki girişi doğrudan silebilirsiniz history -d <entry_id>.
Örneğin, şöyle bir çıktı varsayalım:
$ history
926 ll
927 cd ..
928 export --password=super_secret
929 ll
ve exportçizgiyi temizlemek istiyorsan , bunu basitçe başarabilirsin:
history -d 928
bash çalışma hafızasında tutulur, bash kapandığında veya her komuttan sonra kaydetmek ve bash başladığında veya istek üzerine yüklenmek üzere bash yapılandırılabilir.
Her komuttan sonra kaydetmeyi yapılandırırsanız, aynı anda birden fazla bash çalıştırmanın etkilerini göz önünde bulundurun. (komut satırları serpiştirilecek)
bashexetable'da saklanmış gibi görünmesini sağlar. "Bu, bellekte saklanır bash..."
Oturumunuz aktifken komutlar belleğe (RAM) kaydedilir. Kabuğu kapattığınız anda komutlar listesi .bash_historykapanmadan önce yazılır .
Böylece şu anki oturumun geçmişini göremezsiniz .bash_history.
bashyeniden başlatmayı gerektirmeyen sonlandırma üzerine güncellenir (özellikle terminalleri istediğiniz gibi açıp kapatabileceğiniz grafiksel ortamlarda).
Çalışırken, aşağıdaki durumlarda tarihçeyi yalnızca bellekte (varsayılan olarak) tutar:
Hgiriş echo "$-") ayarlanır.0 ve*(veya başka bir çok kısıtlayıcı desen).Yukarıdakilerden herhangi biri başarısız olursa, hiçbir tarih bellekte saklanmaz ve sonuç olarak diske tarih yazılmaz veya yazılmaz.
Aşağıdaki durumlarda bellekteki tarih diske yazılır:
Ancak yalnızca kabuk çıktığında veya komutları history -a(ekleme) veya history -w(yazma) çalıştırıldığında.
Diske hemen bir yazma tetiklemek için değişkeni kullanabilirsiniz:
PROMPT_COMMAND='history -a'
hangi edecek geçmiş dosyasına tarih hatları. Bunlar, geçerli bash oturumunun başlangıcından beri girilen ancak geçmiş dosyaya henüz eklenmemiş olan tarih çizgileridir.appendnew
Veya:
PROMPT_COMMAND='history -w'
To üzerine bellekten listesiyle HISTFILE tarih.
Böylece, hafızada bulunan bir komutu kaldırabilirsiniz:
$ history 5
6359 ls
6360 cd ..
6361 comand --private-password='^%^&$@#)!@*'
6362 top
6363 set +o | less
$ history -d 6361
$ history 5
6359 ls
6360 cd ..
6361 top
6362 set +o | less
$ history -w
Ve son komutla diske yaz:
history -w # with `shopt -u histappend` unset
.bash_historyDosyanız yanlışlıkla kökündeyse, işler durur. Bu durumda, mülkiyeti kontrol edin vesudogerekirse mülkiyeti düzeltmek için kullanın .