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.out
süreçler var . İkincisinde, ilerlemeyi ile kontrol ediyorum ls -lAhF
. Ve (yani tarihteki son komut) ls
tuş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.UpENTERls
cat /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 -lAhF
veyawhile sleep 1; do ls -lAhf; done
; dosya boyutunu izlemek yerinepv /dev/foo > file.out
( ivarch.com/programs/pv.shtml ) kullanabilirsiniz .