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, HISTFILE
değişken tarafından belirtilen dosyaya kaydedilir . Yani:
unset HISTFILE
Bu aynı zamanda zsh için de geçerlidir, ancak $HISTFILE
kabuk 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_logout
Duran 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, HISTIGNORE
değ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 ls
ve cd
eklenemez.
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 ignoreboth
da 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 SIGHUP
sonra 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 -9
Her ş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 -c
Hemen önce kimsenin önermediğini görünce şaşırdım exit
. IINM (Ben uzman değilim) güzel yapacak.
history -r
geç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+A
Ardından (ekrandan çıkış sırası) tuşuna basın :scrollback 0
. Bu geri kaydırma geçmişini siler. Şimdi :scrollback 15000
geri kaydırma arabellek boyutunu sıfırlamak için hemen yapabilirsiniz .
screen(1)
?
scrollback=0
.
Ctrl+a H
ne de Ctrl+a :clear
geç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 H
veya 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 :scrollback
Ardı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 HISTFILE
dahaki sefere ihtiyacım yok ? (Bu doğru veya yanlış olup olmadığını sadece söylemek)