根据第一个字符是否为空格来更改 bash 提示符

根据第一个字符是否为空格来更改 bash 提示符

现在,每个以空格字符开头的命令都会被 bash 历史记录忽略(HISTCONTROL=ignoreboth在 中~/.bashrc)。
当我按空格作为提示输入字段中的第一个字符时,我希望有更好的视觉提示。

那么有没有办法在bash提示符中添加这样的东西呢?
例如,当提示注意到您按空格键时,您可以为提示的一部分着色作为输入字段的第一个字符(因为显然对输入字段中的其他空格字符做出反应是愚蠢的)。

答案1

所以,诚然,这有点黑客,但我认为它将实现您的最终目标(即使它不是您想要的方式)。在您的.bashrc(或登录时获取的其他任何地方)中添加类似于以下内容的内容。

check_space() {
    if [[ "$READLINE_LINE" == " " ]]; then
        echo "This command will not be recorded in .bash_history!!"
    fi
    READLINE_LINE="$READLINE_LINE "
    READLINE_POINT=$(($READLINE_POINT+1))
}
bind -x '" ": check_space'

每次按下空格键时,它都会调用该check_space函数以查看是否应该打印出警告。

感谢杰夫的帮助这里 谁得到了德米特里的帮助这里

编辑 dlsso:

要使用任意字符而不是空格:

check_char() {
    char=$1;
    if [[ "$READLINE_LINE" == "$char" ]]; then
        echo "This command will not be recorded in .bash_history!!"
    fi
    READLINE_LINE="$READLINE_LINE$char"
    READLINE_POINT=$(($READLINE_POINT+${#char}))
}
for char in {a..z}; do
    bind -x '"$char": check_char $char'
done

相关内容