Mudança no prompt do bash dependendo se o primeiro caractere é um espaço

6

Agora, todos os comandos que começam com um caractere de espaço são ignorados pelo histórico bash ( HISTCONTROL=ignoreboth in ~/.bashrc ).
Eu gostaria de ter uma melhor dica visual quando eu pressionar espaço como o primeiro caractere no campo de entrada de prompt.

Então, há um método de adicionar tal coisa no prompt do bash?
Por exemplo, você coloria uma parte do prompt quando percebe que você pressiona o espaço como o primeiro caractere do campo de entrada (porque obviamente reagir a outros caracteres de espaço no campo de entrada seria tolo).

    
por AppAraat 27.10.2015 / 08:42

1 resposta

3

Então, admitidamente, isso é um pouco trabalhoso, mas acho que vai atingir seu objetivo final (mesmo que não esteja do jeito que você queria). No seu .bashrc (ou em qualquer outro lugar que seja originado no login), adicione algo semelhante ao seguinte.

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'

Toda vez que a barra de espaço é pressionada, ele chama a função check_space para ver se deve imprimir um aviso ou não.

Obrigado pela ajuda de Jeff aqui que recebeu ajuda de Dmitry aqui

EDIT FOR dlsso:

Para usar um caractere arbitrário em vez de espaço:

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
    
por 23.12.2015 / 16:53