Bir kereden fazla yanlışlıkla birkaç komut çalıştırdım ve bash geçmişimi kirlettim. Bash tarihimi kaydetmeden terminalimi nasıl kapatırım? Fedora kullanıyorum.
Bir kereden fazla yanlışlıkla birkaç komut çalıştırdım ve bash geçmişimi kirlettim. Bash tarihimi kaydetmeden terminalimi nasıl kapatırım? Fedora kullanıyorum.
Yanıtlar:
Kabuğunuzun geçmişi, HISTFILEdeğişken tarafından belirtilen dosyaya kaydedilir . Yani:
unset HISTFILE
Bu aynı zamanda zsh için de geçerlidir, ancak $HISTFILEkabuk başladığında belirtilen dosyaya kaydetmeye devam eden ksh için de geçerli değildir (ve bunun tersine, kabuğunuzu başlattıktan sonra geçmişinizi ksh olarak kaydetmeye karar verirsiniz).
Kısa cevap:
Komut istemine şunu yazın:
$ kill -9 $$
Bu hemen yapmak mümkün kabuk olmadan kabuk öldürecek bir şey , tarihin kaydet, tuzak olarak sinyalini böyle yürütmek ~/.bash_logoutDuran işleri uyarmak veya bu iyi şeyler.
Uzun cevap:
Not: Bu seçenekler birbirini dışlayan değildir ; hepsi bir kerede kullanılabilir.
Seçenek 1:
Geçmiş dosyanızı düzene sokmak konusunda mükemmeliyetçiyseniz, yapabileceğiniz şey, HISTIGNOREdeğişkeni kaydedilmesini istemediğiniz komutların glob'larını içerecek şekilde değiştirmek . Örneğin, o zaman HISTIGNORE='ls*:cd*'kendi ~/.bashrcörneğinize eklerseniz , geçmiş dosyanıza eklenebilir lsve cdeklenemez.
Seçenek 2:
Komutunuza göre komutların geçmişinizde hangi komutların kaldığını kontrol etmek istiyorsanız, HISTCONTROL='ignorespace'boşlukla başlayan komut satırlarını atlayacak şekilde ayarlayabilirsiniz . Kullanmak ignorebothda tekrarlanan satırları atlar. Ardından, komut girmeden önce boşluk çubuğuna basmak, geçmiş dosyanızda görünmemesine neden olur.
Seçenek 3:
Eğer sadece terminali kapattığınızda kabuk derhal çıkarsa trap, terminal programın kabuğu gönderdiğini ( xtermörneğin gönderir SIGHUPsonra kabuğun çıkmasını bekler) sinyal gönderebilirsiniz ve tarihçeyi kaydetmeden çıkabilirsiniz. bu sinyali alır. Şunu da ekle ~/.bashrc:
# don't record history when the window is closed
trap 'unset HISTFILE; exit' SIGHUP
kill -9Her şey başarısız olduğunda korkunç durumlar dışında bir şey için kullanmayı teşvik etmenin iyi bir fikir olduğunu sanmıyorum .
history -cHemen önce kimsenin önermediğini görünce şaşırdım exit. IINM (Ben uzman değilim) güzel yapacak.
history -rgeçmiş dosyasını yeniden okuyacak, böylece kaydetme işlemi bir işlem yapmaz.
Geçmiş dosyasını belirlemek için bash'ın kullandığı ve kabuk çıkarken ne kadar satır yazılacağını belirten iki ortam değişkeni vardır.
Bunlardan biriyle oturumunuzun geçmişini atabilirsiniz (geçmiş dosyanızdan kaldırmak istediğiniz oturum sırasında ayarlanmış):
HISTFILE=/dev/null
veya
HISTSIZE=0
Bunlardan biri Fedora'daki Bash'de gayet iyi çalışıyor
Komuta geçmişini neden bu kadar önemsiyorsun bilmiyorum. Sık sık belirli komutlara ihtiyaç duyuyorsanız, onlar için takma adlar tanımlarsanız daha fazla eğlenebilirsiniz, böylece onları tarihte aramak zorunda kalmak yerine iki tuşa basarak geri alabilirsiniz.
Eli çoktan, size kurulacak olan Bash için doğru cevabı verdi HISTSIZE=0.
Ben sadece GNU ekran için yapmak için bir yöntem eklerdim . Ctrl+AArdından (ekrandan çıkış sırası) tuşuna basın :scrollback 0. Bu geri kaydırma geçmişini siler. Şimdi :scrollback 15000geri kaydırma arabellek boyutunu sıfırlamak için hemen yapabilirsiniz .
screen(1)?
scrollback=0.
Ctrl+a Hne de Ctrl+a :cleargeçmişi kaldıracak. İhtiyacın var Ctrl+a :scrollback 0. Kendin test edebilirsin. Yeni bir ekran oturumu başlatın. Şimdi bir yap cat /etc/passwd. Şimdi, yukarıdakilerden herhangi birini yapın - Ctrl+a Hveya Ctrl+a :clear. Şimdi, Ctrl+a [yukarı ve sonra ne kadar kopyalayabileceğinizi görmek için yukarı ok tuşunu kullanarak ekran tamponundan kopyalamayı deneyin . Ctrl+a :scrollbackArdından bir a yaptıysanız clear, herhangi bir geri kaydırma tamponu olmayacağından, yalnızca geçerli pencerede gördüğünüz kadar ileri gidersiniz.
set HISTFILEdahaki sefere ihtiyacım yok ? (Bu doğru veya yanlış olup olmadığını sadece söylemek)