Bash geçmişinde "tehlikeli" komutların günlüğe kaydedilmesini önlemek için, dosyama aşağıdaki satırı ekledim .bashrc:
HISTIGNORE='rm *:mv *:cp *:cat*>*:pv*>*'
bu iyi çalışıyor, ancak bir yan etkisi var: Bir makinede yürütülen komutların tam geçmişini göremiyorum. Diyelim ki deneyler için birkaç makinem var ve tüm komutları görmek istiyorum. Ben bash dahili historyçalıştırılan komutları görüntülemek için kullanın ve belki de bugünün tarihi için grep:
history | grep Sep-28
Yapmak istediğim şey "tehlikeli" komutları da kaydetmektir, ancak #satırın başına bir a koymak , böylece komutu yanlışlıkla tarihe göre yürütürsem, hiçbir hasar olmazdı.
Bunun mümkün olup olmadığı hakkında hiçbir fikrim yok.
Güncelleme ve açıklama:
Bunun benim için bir sorun olmasının ana nedeni, genellikle birkaç terminalden makineme bağlı olmam ve bir terminalde yürütülen herhangi bir komutun hemen diğer terminallerin geçmişine okunmasıdır. Bu,
PROMPT_COMMAND="history -a; history -c; history -r"
İki terminalim açık olduğunu düşünelim. Birinde bazı cat /dev/foo > file.outsüreçler var . İkincisinde, ilerlemeyi ile kontrol ediyorum ls -lAhF. Ve (yani tarihteki son komut) lstuşuna basarak tekrarlamaya devam ediyorum . İlk komut biter bitmez, tarihteki son komut artık değil . Dikkatli olmazsam, cat'ı tekrar başlatacağım ve file.out'un üzerine yazacağım.UpENTERlscat /dev/foo > file.out
Ulaşmak istediğim şey, cat komutunun öncesinde bir ile başlanması #ve böylece yürütülmemesi. Ancak, yine de tarihte görmek ve yorumunu kaldırarak (uzun bir komut ise) yeniden kullanabilirsiniz.
watch ls -lAhFveyawhile sleep 1; do ls -lAhf; done; dosya boyutunu izlemek yerinepv /dev/foo > file.out( ivarch.com/programs/pv.shtml ) kullanabilirsiniz .