Bash tarihi tamamen nasıl temizlenir?


254

Sunucumun geçmişinden önceki tüm komutları silmek istiyorum. Kullandım history -cve her şey temizlenmiş gibi görünüyor ama sunucuya ssh yaptığımda, tüm komutlar hala orada.

Onları kalıcı olarak nasıl temizleyebilirim?

Yanıtlar:


332

Dosya ~/.bash_historygeçmişi tutar.

Sunucudaki bash geçmişini tamamen silmek için, terminali açın ve

cat /dev/null > ~/.bash_history

Diğer alternatif bir yol bağlamaktır ~/.bash_historyiçin/dev/null

Ancak,

Bir can sıkıcı yan etki Geçmiş girişi bir olmasıdır bellekte kopyasını ve edecektir Oturumu dosyaya geri flush .

Bunu gidermek için aşağıdaki komutu kullanın (benim için çalıştı):

cat /dev/null > ~/.bash_history && history -c && exit

17
Ayrıca yukarıdaki komutu .bashrc & .bash_logout içine de koyabilirsiniz. ne zaman giriş yaptığınız zaman açık bir tarihe sahip olacaksınız ve oturumu kapattığınızda geçmişiniz silinecek
Qasim

26
Neden orada / dev / null'a ihtiyacınız var? > ~/.bash_hstoryYeterli olmaz mıydı ?
yapılandırıcı,

4
evet yeterli olur!
15'te

3
SSH ile bağlıyken bir ahududu kutusunda yapmaya çalıştım. Yukarıdaki komutu (cat / dev / null> ~ / .bash_history && history -c && exit), @ Qasim tarafından önerildiği gibi hem .bashrc & .bash_logout'a ekledim. SSH üzerinden bağlanır bağlanmaz uzaktaki ev sahibi bağlantıyı kapatıyor (motd yazdıktan sonra). Yardım: /
Gelişmiş

14
İşleri düzgün bir şekilde okumadan ve işlem ve veri akışını anlamadan, kör bir şekilde yaptığınızda ne olacağını göstermeye gider. Ayrıca, kötü iletişimin tuzaklarını da gösterir. Devav2'nin yaptığı, onu bir kez çalıştırmaktı ve Qasim'in yazması gereken, login komut dosyasına eklemeden önce exit komutunu kaldırmaktı.
Sri

142

Ne yapalım:

İçinde her bir açık darbe kabuk (Birden fazla açık terminallere sahip olabilir):

history -c
history -w

Neden: Yukarıda belirtildiği gibi history -cdosyayı boşaltır ~/.bash_history. Bash kabuğunun, geçmişi hemen bash_history dosyasına aktarmadığını not etmek önemlidir. Bu nedenle, (1) tüm terminallerde geçmişi temizlemek (2) ve (2) geçmişi silmek önemlidir . Yukarıdaki komutların yaptığı budur.

Referans: http://www.giannistsakiris.com/index.php/2007/09/13/how-to-clear-bash-history-and-what-to-watch-out-for/


3
Aslında, tam tersi benim için çalıştı.
kristianp

24
Pek çok durumda, bu iki komutu bir araya getirebilirsiniz:history -cw
Elliot

2
Nedense bu, Ubuntu 14.04, muhtemelen başkaları üzerinde çalışmaz. Olmalı ama yapmamalı. "History -cw" komutunu verirseniz, yukarı ok ile tarihin artık orada olmadığını doğrulayabilirsiniz, ancak başka bir terminal penceresi başlatırsanız (Unity masaüstünde) shift + tuşuyla terminal simgesine tıklayın (elimde başlatıcısı sabitlenmiş) komutları geçmişi geri döndü, "tarih -cw" kaç kez yaptığınız önemli değil. "cat / dev / null> ~ / .bash_history", benim için çalışan tek yoldur.
Hatoru Hansou

Ben Ubantu olmasam da, OSX'teki bash kabuğum için gayet iyi çalışıyor.
Scott Biggs

3
Tarihçe -c, sonra tarihçe -w, önce tarihi temizledikten sonra değişiklikleri yaz. Bu, terminalin kapatılıp tekrar açılmasıyla kolayca teyit edilir, önce -w ile tekrar komutlar gelir, -d ile son tarih etkili bir şekilde temizlenir.
Hatoru Hansou

56

geçmişi sonsuza dek silmek için aşağıdaki komutları uygulayın

history -c && history -w

iyi şanslar!


3
Kabul edilen cevaptan çok daha iyi. ;)
Chiramisu

Bu cevap, bu bayrakların ne yaptığını açıklarsa (ve bu nedenle neden / ne zaman doğru kullanım için kullanıldıklarını açıklarsa) daha yararlı olacaktır.
Lars

20

Çok daha basit bir tane daha var: history -cterminal isteminde çalışan ve giden bash_historydosyadaki tüm girişler .


Hayır öyle değil. Oturumu kapat, oturumu aç, yukarı ok bana her şeyi verir. Sen de "w" geçmişine ihtiyacın var.
stolsvik

1
OP'nin sorusunu okursanız, kullanmanın history -cbu soruya yol açan yöntem olduğunu bilirsiniz .
J.Money

10

Bunu yapmanın başka bir yolu da ~/.bash_historydosyayı kullanarak dosyayı silmek rm ~/.bash_history. Başka bir zaman giriş yaptığınızda, .bash_historydosya otomatik olarak oluşturulur.


4
En azından bazı işletim sistemlerinde ~ / .bash_history çıkış yaptığınız zaman diske yazılır - * buntus hakkında emin değilim.
d -_- b

7

Geçerli kabuğun geçmişini temizle:

history -c

Oturumu kapattığınızda mevcut kabuğunuzun geçmişi, önceki kabukların geçmişinin önbelleği olan ~ / .bash_history'ye maksimum sayıya eklenir (bkz. "Man bash" içindeki HISTFILESIZE).

Geçmişi bir bütün olarak kaldırmak istiyorsanız, yukarıdaki girişlerin çoğunun önerdiği ~ / .bash_history 'yi boşaltmanız gerekir. Gibi:

history -c && history -w

Bu, mevcut kabuğun geçmişini temizler ve ardından mevcut kabuğun geçmişini (boş) ~ / .bash_history .... üzerine yazmaya zorlar ya da daha doğru olması için HISTFILE (varsayılan olarak ~ / .bash_history) üzerine yazması için zorlar.

Bu yardımcı olur umarım.


4
Yanıtınız doğrudur, ancak soru iki yaşındaydı, cevapları kabul etmişti ve verdiğiniz cevapları içeriyordu.
Charles Green,

6
rm ~/.bash_history; history -c; logout

Şimdi tekrar giriş yapın ve ok işaretlemenizin size hiçbir şey vermediğine tanık olun.


1
@KasiyA Bir sunucu ve bir ssh oturumu hakkında, bu yüzden düzenlemeye gerek yok ...
Radu Rădeanu

0

Bunu dene

dosyanızı düzenleyin .profileve dosyanın sonuna aşağıdaki satırı ekleyin

rm -f .bash_history

Bu şekilde, her giriş yaptığınızda, .bash_history dosyanızı sizin için otomatik olarak silecektir. -R özyinelemeli kaldırma seçeneği ekleme tehlikeli görünüyor ve gerekli değildir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.