避免在 Bash 中记录空命令

避免在 Bash 中记录空命令

我在 .bashrc 文件末尾使用以下几行将输入的 bash 命令记录到 Syslog:

export PROMPT_COMMAND='
RETRN_VAL=$?;
if [ -f /tmp/lastoutput.tmp ]; then
    LAST_OUTPUT=$(cat /tmp/lastoutput.tmp);
    rm /tmp/lastoutput.tmp;
fi;
logger -S 10000 -p local6.debug "{\"user\": \"$(whoami)\", \"path\": \"$(pwd)\", \"pid\": \"$$\", \"b64_command\": \"$(history 1 | sed "s/^[ ]*[09]\+[ ]*//"| base64 -w0 )\", \"status\": \"$RETRN_VAL\", \"b64_output\": \"$LAST_OUTPUT\"}";
unset LAST_OUTPUT;
logoutput() {
    output=$(while read input; do echo "$input"; done < "${1:-/dev/stdin}");
    echo -e "$output\n";
    echo -e "$output" | head -c 10000 | base64 -w0 > /tmp/lastoutput.tmp;
    return $?;
}

我遇到的问题是,每当我打开新 shell 或只是按 Enter 而不输入任何命令时,它都会记录当时的最新历史记录。我如何避免记录空命令或仅将它们记录为空白行?谢谢!

相关内容