Sie gehen das in die falsche Richtung. Sie möchten alle eingegebenen Befehle protokollieren? Fish behält standardmäßig die letzten 256k deduplizierten Einträge aus allen Sitzungen bei, sodass Sie eigentlich nichts tun müssen.
Wenn Sie ein PROMPT_COMMAND Äquivalent wollte, na ja, eine Aufforderung zur Anzeige gibt es die fish_prompt
Funktion (die Sie bereits angepasst haben), und etwas anderes jedes Mal zu tun, eine Eingabeaufforderung angezeigt gibt es die fish_prompt
Ereignis, das Sie einen Listener definieren für wie
function name --on-event fish_prompt
# do stuff
end
Wenn Sie alles, melden Sie sich auf eine andere Datei ausführen, gibt es die fish_preexec
Ereignis, so
function log_commands --on-event fish_preexec
# fish_preexec functions receive the commandline as the argument (see `function --help`)
echo $argv >> ~/fish.log
end
funktionieren würde.
Um dies zu erweitern, zeichnet Fisch bereits Ihre gesamte Geschichte, und Sie können es mit 'Geschichte' zugreifen. Fisch fasst auch mehrere Sitzungen zu einer einzigen Verlaufsdatei zusammen, was die Hauptbeschränkung der Bash-Historie ist. –
Vielen Dank für die Antworten - das war hilfreich. Beachten Sie, dass das Ziel der Protokollierung aller Befehle (einschließlich Duplikate) darin besteht, eine Prüfung der im Artikel erwähnten Arten durchzuführen und 'fish_history' nicht zu ersetzen. – neowulf33