Yanıtlar:
Komutu tarihe kaydetmeden çalıştırmak istiyorsanız, fazladan bir boşluk ile hazırlayın.
prompt$ echo saved
prompt$ echo not saved \
> # ^ extra space
Bu işlemin gerçekleşmesi için ya da gerek ignorespace
yoksa ignoreboth
içinde HISTCONTROL
. Örneğin, koş
HISTCONTROL=ignorespace
Bu ayarı kalıcı hale getirmek için içine koyun .bashrc
.
Komutu zaten çalıştırdıysanız ve geçmişi geçmişten kaldırmak istiyorsanız, ilk önce
history
Geçmişinizde komutların listesini görüntülemek için Silmek istediğiniz numaranın yanındaki numarayı bulun (örn. 1234) ve
history -d 1234
Ek olarak, silmek istediğiniz satır zaten $ HISTFILE’nize yazılmışsa (bu genellikle varsayılan olarak bir oturumu sonlandırdığınızda olur), $ HISTFILE’a tekrar yazmanız gerekir; oturum, toplantı, celse:
history -w
history -a
, normal konfigürasyonda çıkış yapmak yerine geçmiş dosyaya zaten yazıldığından ayarladım . Özellikle: mywiki.wooledge.org/BashFAQ/088
history -w
. Aksi halde çıktığınızda, silinen çizgi hala oradadır!
history -w
SONRA history -d {num}
kritik çerez cevaba eklenmesi gerektiğini, aksi takdirde bir kullanıcı geçerli kabuk aslında kalıcıdır gelen geçici silmek düşünebilir - tam olarak ne ihtiyaç vardı.
history -w
, zaten .bash_history
dosyaya yazılmış olan girişler için gereklidir . Nasıl yeniden üretilir (örneğin, stok konfigürasyonlu CentOS 7'de): 1. giriş 2. komutu girin echo foo
3. çıkış 4. tekrar giriş 5. giriş echo foo
6. silme çıkış 7. giriş tekrar: giriş hala var. Bash tarihinizi nasıl yapılandırdığınıza bağlı olarak, belki de bu konuyu başka şekillerde de çoğaltabilirsiniz - örneğin, oturumu kapatmadan önce tarih yazmasını kışkırtıyorsanız.
Tüm geçmişinizi temizlemek için
history -c
Tek bir satırı silmek için
history -d linenumber
Bu benim içinde var ~/.bashrc
, bu komutun $ forget
önceki komutu silip tarihe geçmesini sağlar.
function forget() {
history -d $(expr $(history | tail -n 1 | grep -oP '^ \d+') - 1);
}
history -d $( history | tail -n 1 | cut -f 1 -d " " )
basit olmaz mıydı ?
history | tail -n1
olduğunu history
bu yüzden bu sayıyı silme komutu kendisi yanlış girdiyi alır. Bununla birlikte, history -d $( history | awk 'END{print $1-1}' )
satır seçimi, alan seçimi ve çıkarma işlemlerini birleştirir.
Bash oturumunun tamamını unutmak istiyorsanız kill
, geçerli bash işlemini yapabilirsiniz. Değişken yana $$
tutun pid
şimdiki kabuğun, bunu yapabilirsiniz:
kill -9 $$
Geçmişi temizledikten sonra değişiklikleri yazmanız gerekir. Geçmişinizde geçmiş silme komutunu almak istemiyorsanız, komutu şöyle çalıştırmanız gerekir:
history -c && history -w && logout
İyi şanslar.
Adding another point suppose if you want to delete a range of history lines
You can use below script.
Below example will delete history output from line 1 to line 150.
for i in `history | awk 'NR > 1 && NR <=150{print $1}'`; do history -d $i; done