最初の文字が空白かどうかに応じて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関数を呼び出して警告を印刷する必要があるかどうかを確認します。

助けてくれてありがとうJefここ ドミトリーの助けを受けた人ここ

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

関連情報