Yanıtlar:
ve başka bir cevabı hatırladım, bu sorunun cevabının asıl cevabı.
HISTCONTROL'de "görmezden" varsa, o zaman boşluk karakteriyle başlayan herhangi bir satırı hatırlamayacaksınız. mevcut kabuğun geçmişinde bile görünmeyecek, tek başına $ HISTFILE olarak kaydedilmiş.
Örn : ~ / .bashrc dizininde HISTCONTROL = 'ignoreboth: sildim' ihracatı yaptım
bash man sayfasındaki detaylar:
HISTCONTROL Komutların nasıl olduğunu kontrol eden, iki noktalardan oluşan bir değerler listesi geçmiş listesine kaydedildi. Eğer değerler listesi içeriyorsa yoksay, boşluk karakteri ile başlayan satırlar geçmiş listesine kaydedildi. Yok sayılanların değeri satırlara neden olur kaydedilmemiş önceki geçmiş girişiyle eşleşiyor. Değeri görmezden gelinme, görmezden gelinme ve aldırış etmeler için kısa yoldur. Bir değer Silinenlerin sayısı, geçerli satırla eşleşen önceki tüm satırların bu satır kaydedilmeden önce tarihçe listesinden çıkarılacak. Yukarıdaki listede olmayan herhangi bir değer göz ardı edilir. HISTCONTROL ise belirsiz veya geçerli bir değer içermiyorsa, kabuk ayrıştırıcısı, değer listesine bağlı olarak geçmiş listesine kaydedilir. TARİHÇE Çok çizginin ikinci ve sonraki satırları bileşik komut test edilmedi ve geçmişe eklendi HISTCONTROL'ün değerinden bağımsız olarak.
Google'dan öğrendiğim birkaç tarih dersi:
Belirli dizeleri yoksaymak için tarihi ayarlayabilirsiniz. Bu örnekte, ls, passwd komutlarını ve karakter alanı öneki komutları görmezden geldim.
export HISTIGNORE = "ls: passwd:"
Oturumunuzun geçmişini devre dışı bırakmak için aşağıdakileri yapabilirsiniz:
HISTSIZE dışa aktar = 0
Sadece son komutu tarihçeden kaldırmak istiyorsanız, tuşuna basıp Up-arrowardından Ctrl - U(satırın başına sil) ve sonra Up-arrowtekrar basabilirsiniz .
Herhangi bir çizgiyi böyle bir tarihten silebilirsiniz. Sadece yukarı-ok veya arama ya da düzenlenmekte olan komut satırını yapmak için ne olursa olsun kullanın, ardından Ctrl - U, ve ardından Up-arrowveya Down-arrowbaşka bir tarih satırına geçmek için tuşuna basın .
Bunu bir gün önce kazara keşfettim. Belgelenmiş olup olmadığı hakkında hiçbir fikrim yok.
Genel olarak, şu anki kabuğun geçmişini hiç kaydetmemek daha az güçtür:
HISTFILE=/dev/null
HISTFILEDeğişkeni ayarlayabilirsin . Kimden
man bash:
HISTFILE Komut geçmişinin kaydedildiği dosyanın adı (bkz. HIS- Aşağıda TORY). Varsayılan değer şudur ~ / .bash_history. Eğer ayarlanmamışsa, Etkileşimli bir kabuk olduğunda komut geçmişi kaydedilmez çıkışlar.
Bunun, kabuk çıkmadan önce komutun yerel kabuk geçmişinde görünmesini engellediğini sanmıyorum.
Bu yöntemi kimsenin yazmadığını görüyorum, öyleyse yazacağım.
history -d $((HISTCMD-1)) && history -d <command or number of command>
history -d söz konusu girişi tarihten siler.
HISTCMDçalıştırılacak komutun command_number değerini saklar. Bu nedenle, (HISTCMD-1) en son yürütülen komutu ifade eder.
Nasıl çalıştığını gösteren kısa bir bash filmi yaptım: https://asciinema.org/a/dtxpuovhty0obhln50soqypt2
Komutu çalıştırdıktan sonra ve aynı zamanda komutun kendisini de sildiği için okla yukarı çıkmak komutu göstermez, bu yüzden sık sık kullanmayı planlıyorsanız, takma ad oluşturmak en iyisi olacaktır:
alias hc='history -d $((HISTCMD-1)) && history -d $1'
O zaman yapabilirsin:
$ hc command