Re: dash and ANSI escape sequences

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Alex Waite <alexqw85@xxxxxxxxx> wrote:
 |I come here in search of someone who understands dash/portable scripting 
 |better than I do. Today, my Google-foo is failing me.
 |
 |I am in the process of cleaning up someone else's semi-portable shell 
 |script (originally written on FreeBSD). The original script uses colors, 
 |in the form of
 |
 |echo -e "\e[1;32mpassed\e[0m"
 |
 |"echo" should be avoided in general and any option passed to "echo" is 
 |non-portable. In bash, I can easily port this to printf
 |
 |printf '%b' "\x1b[32;1mpassed\x1b[0m\n"
 |
 |However, this approach does not work in dash. I have read both the echo 
 |and printf sections of the dash manual, and it seems that both "\e" and 
 |"\x" are unsupported. Using "%b" allows additional backslash-escape 
 |sequences, but only \c and \0.
 |
 |I know the purpose of dash is to provide an efficient POSIX compliant 
 |shell. Is there really no POSIX compliant way to use color? It seems 
 |so... 80s. Dash's manpage does state that it supports "backslash 
 |notation as defined in ANSI X3.159-1989 (“ANSI C89”)", but I can't find 
 |a copy of ANSI C89 online to confirm whether it includes display 
 |attributes. ANSI C89 is old, but still... too old for color?

Colours have nothing to do with the C programming language, they
are an attribute of ISO 6429/ECMA-48 capable terminals.

 |Am I somehow missing some hidden functionality in printf, or is there 
 |really no POSIX compliant method of printing colors, or is Dash simply 
 |incomplete with its POSIX support in this regard?
 |
 |Any insight is most appreciated.

  $ /usr/bin/dash -c 'printf "passed"'

(i.e., the plain control character U+001B, ESCAPE) works for me,
also on mksh(1), ksh(1), bash(1), and old Bourne shells that
effectively go through my /usr/bin/printf.

 |---Alex

--steffen
--
To unsubscribe from this list: send the line "unsubscribe dash" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux