Um zu verhindern, dass "gefährliche" Befehle im Bash-Verlauf protokolliert werden, habe ich meiner .bashrcDatei folgende Zeile hinzugefügt :
HISTIGNORE='rm *:mv *:cp *:cat*>*:pv*>*'
Das funktioniert gut, hat aber einen Nebeneffekt: Ich kann den vollständigen Verlauf der auf einem Computer ausgeführten Befehle nicht sehen. Angenommen, ich habe mehrere Maschinen für Experimente und möchte alle ausgeführten Befehle sehen können. Ich würde die interne Bash verwenden history, um ausgeführte Befehle anzuzeigen und vielleicht nach dem heutigen Datum zu fragen:
history | grep Sep-28
Was ich tun möchte, ist, auch "gefährliche" Befehle zu protokollieren, aber ein #an den Anfang der Zeile zu setzen, so dass, wenn ich den Befehl aus der Vergangenheit versehentlich ausführen würde, kein Schaden angerichtet würde.
Ich habe keine Ahnung, ob dies möglich ist.
Update und Klarstellung:
Der Hauptgrund, warum dies für mich ein Problem ist, ist, dass ich normalerweise von mehreren Terminals aus mit meinem Computer verbunden bin und jeder Befehl, der auf einem Terminal ausgeführt wird, sofort in die Historie anderer Terminals eingelesen wird. Dies wird erreicht durch
PROMPT_COMMAND="history -a; history -c; history -r"
Stellen wir uns vor, ich habe zwei Terminals geöffnet. In einem habe ich welchecat /dev/foo > file.out laufenden Prozess. Im zweiten überprüfe ich den Fortschritt mit ls -lAhF. Ich halte Wiederholung lsdurch Drücken Upund ENTER(die, letzter Befehl aus der Geschichte ist). Sobald der erste Befehl beendet ist, ist der letzte Befehl aus dem Verlauf nicht mehr vorhanden ls, aber cat /dev/foo > file.out. Wenn ich nicht aufpasse, starte ich cat erneut und überschreibe file.out.
Was ich erreichen möchte, ist, dass dem cat-Befehl ein vorangestellt wird #, damit er nicht ausgeführt wird. Ich würde es jedoch immer noch in der Geschichte sehen und kann es wiederverwenden (wenn es ein langer Befehl ist), indem ich es nicht kommentiere.
watch ls -lAhFoder verwendenwhile sleep 1; do ls -lAhf; done. Anstatt die Dateigröße zu beobachten, können Siepv /dev/foo > file.out( ivarch.com/programs/pv.shtml ) verwenden.