[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Help-bash] `read -e -p`, colors, and invisible chars
From: |
Chet Ramey |
Subject: |
Re: [Help-bash] `read -e -p`, colors, and invisible chars |
Date: |
Thu, 27 Aug 2015 08:58:17 -0400 |
User-agent: |
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:38.0) Gecko/20100101 Thunderbird/38.2.0 |
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On 8/26/15 10:16 PM, Mike Frysinger wrote:
> On 26 Aug 2015 22:04, Chet Ramey wrote:
>> On 8/26/15 9:01 PM, Mike Frysinger wrote:
>>> my desire is simple:
>>> show a custom colorized prompt when reading input and leverage readli
ne
>>> (for editing & history)
>>>
>>> the `read` builtin almost gets me there:
>>> - the -p flag allows you to specify a custom prompt
>>> - the -e flag uses readline for input
>>>
>>> however, the -p flag does not parse escape sequences. np, just expand
>>> that myself ahead of time using `printf %b`. simple example:
>>> prompt=$(printf '%bfoo>%b ' '\033[1;33m' '\033[0m')
>>> read -e -p "${prompt}"
>>>
>>> now i hit the classic invisible char problem when readline tries to
>>> redraw the prompt (just hold up on the arrow key to draw many lines
>>> from your history). normally i'd leverage \[ and \], but bash does
>>> not seem to support that w/the read builtin -- they get rendered in
>>> the output directly instead of being consumed.
>>> $ prompt=$(printf '%bfoo>%b ' '\[\033[1;33m\]' '\[\033[0m\]')
>>> $ read -e -p "${prompt}"
>>> \[\]foo>\[\]
>>> (yes, moving the \[ and \] to the printf string yields same behavior)
>>
>> https://lists.gnu.org/archive/html/bug-bash/2015-08/msg00025.html
>
> so no interest in making -p easier to use ?
Sure, at some point I'll look at doing something, but the solution Dennis
and I provided will work today.
- --
``The lyf so short, the craft so long to lerne.'' - Chaucer
``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, ITS, CWRU address@hidden http://cnswww.cns.cwru.edu/~chet/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iEYEARECAAYFAlXfCWEACgkQu1hp8GTqdKuZ8QCeLQxW0UGLDBDGqhCscmYrbc6Y
N1UAnjbyXK3Dviq1Z8Xof89U1xcqnobt
=iSoV
-----END PGP SIGNATURE-----