From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 600 invoked by alias); 19 Aug 2010 15:13:37 -0000 Mailing-List: contact zsh-users-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Users List List-Post: List-Help: X-Seq: 15296 Received: (qmail 5746 invoked from network); 19 Aug 2010 15:13:36 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received-SPF: pass (ns1.primenet.com.au: SPF record at _spf.google.com designates 209.85.210.43 as permitted sender) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type; bh=KfF2Yr7fTzbnpatnSc6HpzOW8rLd4HRjW+IZUcLV2iY=; b=x/OPcxXb9+sjR11srN6gBei5zufO49S4jxIUSHzK1+yuX6vJvDX7mM1LlyWO9B7G6y AiybGafcdStKEo+PWZfBMZTOf1aUajsY+yt7EZtkAaEFNSlKLoAbXx6Sb3tKh9ZzDdgB L7O1969x7PnWooFVHkk24NYW/ljGqY1jk0/Ds= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=v2CQA4h7opWWR5vET1/he69G6R1vAQB/2f1zpOGrq4ANzyJC2jAR1M+68s8J3Z6prn zPpEzp0tF3pDqHSTn5vXQcdsjcOKWPH2TyusGVcbPuW1zKJYsAUrTB4c0HSkWzfvwbEg ZHLbj60UQVzkgIgO4lo3gkTc89uEOx7OgwYYQ= MIME-Version: 1.0 In-Reply-To: References: Date: Thu, 19 Aug 2010 17:05:49 +0200 Message-ID: Subject: Re: Setting the terminal title: problem with percent signs From: Mikael Magnusson To: Guillaume Brunerie Cc: zsh-users@zsh.org Content-Type: text/plain; charset=UTF-8 On 19 August 2010 16:26, Guillaume Brunerie wrote: > Hi, > > I have the following in my .zshrc which set the terminal title to "*cmd" > when cmd is executed and to "(cmd)" when execution of cmd is over. > > __last_cmd= > preexec () { > __last_cmd=$1 > print -Pn "\e]0;*$__last_cmd\a" > } > precmd () { > if [[ -n $__last_cmd ]] > then > print -Pn "\e]0;($__last_cmd)\a" > fi > } > > > (print -Pn "\e]0;$str\a" change the terminal title to $str, see 'man > console_codes') > It works well, except when there are percent signs in the last command. > For example if I type "echo 100%", the terminal title becomes "(echo 100)" > instead of "(echo 100%)" and the string " ]0;*echo 100100%" appears in the > terminal. > > How can I do to make it work even with percent signs in the command? Don't use -P for print, in fact, don't use print at all, since it will mess up if you use a \ in the command too. printf '\e]0;%s\a' $str should work better, it won't expand anything in $str at all. If you have literal escape characters in your command it will still mess up, you can use ${(V)str} in that case. -- Mikael Magnusson