zsh-users
 help / color / mirror / code / Atom feed
From: Mikael Magnusson <mikachu@gmail.com>
To: Ray Andrews <rayandrews@eastlink.ca>
Cc: Zsh Users <zsh-users@zsh.org>
Subject: Re: convolutions
Date: Sat, 7 Nov 2015 07:38:03 +0100	[thread overview]
Message-ID: <CAHYJk3RHqLkxcvO1dtmiH1wMwNnsaUxGWy4tve2Pbz=9QJdn=g@mail.gmail.com> (raw)
In-Reply-To: <563D974B.3000308@eastlink.ca>

On Sat, Nov 7, 2015 at 7:16 AM, Ray Andrews <rayandrews@eastlink.ca> wrote:
> On 11/06/2015 09:37 PM, Mikael Magnusson wrote:
>>
>> A smart thing to include when asking for a simpler way to do an obfuscated
>> thing is what it is you're actually trying to do. Saves people the effort of
>> trying to deobfuscate your code first. It's also super unclear what you mean
>> by "expanding $red into native".
>
>
> ... expanding color variables, eg. " ${red} " into their native " \e[31;1m "
> in a file.
>
> That isn't clear?

No, because 'expanding into "\e"' means nothing useful, did you mean a
literal backslash followed by an e, or a literal escape?

> Variables holding color codes seem like a very routine
> thing  to me, there are many of them as a standard part of the shell. If you
> have some long string with color variables ( eg. "$_red" ) in it, and you
> echo the string, the colors execute, but if you save that same string to a
> file and 'cat' it, the color variables do not expand

If you store the string in a parameter and echo that parameter, the
color variables also don't expand.

>--it is necessary to
> convert them to the actual escape codes. My code snippet does that, I'm just
> wondering if it's as simple as it can be.

If you have a parameter with \e in it, and want to expand it to a
literal escape byte, the easiest way is to use ${(g::)red}.

So you have a file with "${red}" in it, and you want to read in the
file, and substitute the value of any parameter references. Moreover,
these parameters are not defined in the file, but are set in the shell
environment and you happen to know that they are string
representations of color escape sequences, and you want to expand
these as well.

Perhaps you should take a step back and redesign whatever it is you're
doing, because it really doesn't seem like a good way to handle things
:).

If your file has a semicolon in it somewhere, then your command will
run arbitrary code. Bart's example doesn't have that exact problem,
but will still execute code if there are things like $(command) in the
file.

-- 
Mikael Magnusson


  reply	other threads:[~2015-11-07  6:38 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-07  2:15 convolutions Ray Andrews
2015-11-07  2:49 ` convolutions ZyX
2015-11-07  4:10   ` convolutions Ray Andrews
2015-11-07  5:37 ` convolutions Mikael Magnusson
2015-11-07  6:16   ` convolutions Ray Andrews
2015-11-07  6:38     ` Mikael Magnusson [this message]
2015-11-07 15:35       ` convolutions Ray Andrews
2015-11-07 17:26         ` convolutions ZyX
2015-11-07  5:38 ` convolutions Bart Schaefer
2015-11-07  6:33   ` convolutions Ray Andrews
2015-11-07  9:32     ` convolutions Bart Schaefer
2015-11-07  9:40       ` convolutions Bart Schaefer
2015-11-07 16:09       ` convolutions Ray Andrews
2015-11-07 17:33         ` convolutions Bart Schaefer
2015-11-07 18:28           ` convolutions Ray Andrews
2015-11-07 17:17   ` convolutions Martin Vaeth
2015-11-08 15:27     ` convolutions Ray Andrews
2015-11-08 19:14       ` convolutions Bart Schaefer
2015-11-08 21:06         ` convolutions Ray Andrews
2015-11-09  8:50       ` convolutions Martin Vaeth

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAHYJk3RHqLkxcvO1dtmiH1wMwNnsaUxGWy4tve2Pbz=9QJdn=g@mail.gmail.com' \
    --to=mikachu@gmail.com \
    --cc=rayandrews@eastlink.ca \
    --cc=zsh-users@zsh.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).