Komuta tarihini korumaktan kaçının


33

Bash kullanıyorum ve tarihte bazı komutların saklanmasını önlemek istiyorum.

  • Bunu sadece bir sonraki komut için yapmak mümkün mü?
  • Bunu tüm oturum için yapmak mümkün mü?

Amaç, komut satırı argümanlarındaki parolaları gizlemekse, ps
Benitok 27.03

Yanıtlar:


36

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.

1
Uzay numarası için +1: D
petrus

19

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

Referans


7

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

3

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.


2

Bazen yaparım

export HISTFILE=/dev/null

1

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
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.