2012-01-27 22 views
48

.bash_history'u açarken yalnızca önceki oturumumdaki girdileri içerdiğini, geçerli oturumun yalnızca çıkışta eklendiğini fark ettim. Mevcut oturumun kaydedilmesini engellemenin bir yolu var mı? bash'un çökmesi bile, bunun nasıl yapılacağını bilen bir seçenek. İşlemi kill -9 yapabilirim, ancak daha iyi bir yolu varsa bilmek isterim.Geçerli bash oturumunu tarihe kaydetme

+2

Bunu gerçekleştirmenin hack bir yolu, 'kill -9 $$ 'özelliğini kullanmaktır. Terminalinizi bir SIGKILL göndererek, tarih dosyasına yazma şansınız olmaz. – jordanm

cevap

55

geçerli oturum geçmişini temizlemek için history -c komutunu kullanmak olacaktır. Öyleyse, kurtaracak hiçbir şey yok (hatta tarihin kendisini siliyor). unset

HISTFILE= 

HISTFILE: yapmalıyım

+3

Bu ayrıca histfile içeriklerini de yok edecektir. –

+1

Bu benim için değil. Belki bir noktada değişti? Bash 4.2 kullanıyorum. – FatalError

+13

evet, 3.2 için tarih nukes ve 4.2 için değil –

53

ayarını kaldır $HISTFILE değişken

$ unset HISTFILE 

HISTFILE kaldırılırsa ya da geçmiş dosyası yazılabilir değilse geçmiş kaydedilmez ise

. Bash çökmesini de fazla zarif
http://www.faqs.org/docs/bashman/bashref_106.html

+0

Teşekkürler, bu, -c üzerinde tüm geçmişi nuke Bash sürümleri için iyidir. – dotancohen

+0

benim için işe yaramadı – RSFalcon7

+0

Bu vs 'tarihinin yararı -r ', çünkü giriş yaptıktan sonra yaptığınız her şeyi kaybedersiniz. Ama bununla birlikte bunu kaybedersiniz. _going_ oturumda yapmak. – Pylinux

5

.

+0

Teşekkürler, bu işe yarar ve bazı eski sunucularda eski Bash için kullanacağım. – dotancohen

+0

benim için çalışmadı – RSFalcon7

+0

Ayrıca şu deneyleri deneyebilirsiniz: unset HISTFILE Bu oturumda bir şeylerin tarihte olmasını istemiyorsanız, kesinlikle bir numaradır. Aksi halde HISTCONTROL ile ilgili yukarıdaki yorumuma bakın. – th3penguinwhisperer

10

history -c'a benzer başka bir seçenek var, ancak bu mevcut oturumun önceki öğelerini silmez.

Bu sadece giriş yapmışsanız gibi HISTFILE geçmişi yeniden yükler history -r vardır.

umarım bu işe ya 4.3.11 önceki herhangi bash sürümünde bulunup bulunmadığını biliyorum ama yok Yine de listeye eklemek faydalı olacaktır.

İşte bu komuta ve -c arasındaki farkı gösteren bir örnek: Benim için

[email protected]:~$ # I Just logged in 
[email protected]:~$ history | tail -n6 # this shows commands from the previous session, which ends at item 4682 as well as from the current one 
4679 2014-08-23 17:15:29 # Previous session 
4680 2014-08-23 17:15:33 # Still the previous session 
4681 2014-08-23 17:15:37 # note the datetime 
4682 2014-08-23 17:15:44 exit 
4683 2014-08-23 17:17:25 # I Just logged in 
4684 2014-08-23 17:19:54 history | tail -n6 # this shows the last command, and the ones from the previous session 
[email protected]:~$ # This is a secret command, so I need to remove the traces of this session 
[email protected]:~$ history -r 
[email protected]:~$ history | tail -n5 # Note that I went back to item 4682, and there are no traces of history -r command 
6242 2014-08-23 17:15:29 # Previous session 
6243 2014-08-23 17:15:33 # Still the previous session 
6244 2014-08-23 17:15:37 # note the datetime 
6245 2014-08-23 17:15:44 exit 
6246 2014-08-23 17:22:26 history | tail -n5 # Note that I went back to item 4682, and there are no traces of history -r command 
[email protected]:~$ history -C# instead if I issue history -c 
[email protected]:~$ history # everything disappears 
5248 2014-08-23 17:23:13 history # everything disappears 
[email protected]:~$ 
+0

Bash 4.3.39 üzerinde, 'history -r' Tarih dosyasının içeriğini mevcut geçmiş listesine ekler. Cevabını gönderdiğinde yaptıklarının böyle olup olmadığını söyleyemem ... Tarih numaraları, emirleriniz arasında çok şey atlıyor, ama iki katına çıkmayın. – user1902689

+0

Onları eklediğinden emin misin? Bash 4.3.11'de sayılar, sayaç sıfırlanmadığı için ileriye doğru atlar, ancak içeriği orijinal olanlara eklemez. Gerçekten, eğer oturumu kapatır ve giriş yaparsanız, sayılar orijinal hallerine geri döner. –

4

aşağıdaki çalışır.

export HISTFILE=/dev/null 

Bunun önünde bir boşluk olduğunu unutmayın. Modern dağıtımların çoğu, tarihe geçmiş bir mekândan sonra girilen komutları eklemezdi. Bu, bu satırın da geçmişinizde görünmesini engeller.

7

Bunun eski bir iş parçacığı olduğunu biliyorum. HISTCONTROL değişken ayarlanırsa, sadece belirli komutları istiyorsanız

kaydedilmesini değil çek: Sadece tamamlanması için bu eklemek istedim HISTCONTROL = ignoreboth'un veya HISTCONTROL = ignorespace

bir öncülüğünde başlayan her komut tarih tarihe geçmeyecek.

Sadece 2 sent.

+0

Çok, teşekkürler penguen! – dotancohen

+0

Bu güzel bir şey! –