첫 번째 문자가 공백인지 여부에 따라 bash 프롬프트 변경

첫 번째 문자가 공백인지 여부에 따라 bash 프롬프트 변경

공백 문자로 시작하는 모든 명령은 이제 bash 기록( HISTCONTROL=ignorebothin ~/.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

관련 정보