X-Spam-Check-By: sourceware.org Date: Tue, 22 Nov 2005 19:52:22 -0500 (EST) From: Igor Pechtchanski Reply-To: cygwin AT cygwin DOT com To: Robert Body cc: cygwin AT cygwin DOT com Subject: Re: escape codes in ksh "\033]0;\$PWD\007\$PWD> " In-Reply-To: Message-ID: References: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com On Tue, 22 Nov 2005, Robert Body wrote: > I have not been able to figure out how to send escape codes to ksh KSH does not understand escape codes. You have to embed literal special characters into $PS1. > I saw a syntax for ksh on > http://www.steveshilling.pwp.blueyonder.co.uk/scripts/xtermtitle.txt > --------- > PS1='^[]0;${USER}@${HOST}: ${PWD}^Gksh$ ' > --------- > where ^[ is used instead of \033 and ^G instead of \007 > but I tried 3 systems with ksh, no go, it doesn't understand escape > characters, not with \032, not with \[\e and not with ^[ to signfy beginning > of escape code... ksh just repeats them exactly like regular characters In bash, you can type in the following character sequence (sans the spaces): P S 1 = ' Ctrl-V Esc ] 0 ; $ { U S E R } @ $ { H O S T } : Space $ { P W D } Ctrl-V Ctrl-G k s h $ Space ' To get the above prompt. Then start ksh. > in bash it's easy > -------- > PS1='\[\e]0;$PWD\a\]$PWD> ' # (in title) HOST-$PWD ... $PATH> > -------- > > I came up with the following... needs perl, needs xterm > but works in ksh, and bash too > -------- > PS1=$(perl -e 'printf "\033]0;\$PWD\007\$PWD> "') > -------- Sure, that works too. You can use awk or sed instead of perl (which have the advantage of being part of the default installation). > but i just don't know how (and someone must know how) people get the > escape codes into ksh that it works from command prompt or script with a > one line solution (and without secondary help from something like c or > perl code) Both vi and emacs allow you to enter special characters literally. Edit your .profile (or /etc/profile), and you're all set. The ksh-related section of the default /etc/profile has a bug and doesn't work. > Oh, the purpose of this escape sequence is to synchronize the title with > PS1 to be the current directory on an xterm (but the question is about > escape codes, not xterm ;-) ) Again, ksh does not understand escape codes. Neither does ash. Use literal characters. Igor Pechtchanski Volunteer PDKSH maintainer for Cygwin -- http://cs.nyu.edu/~pechtcha/ |\ _,,,---,,_ pechtcha AT cs DOT nyu DOT edu ZZZzz /,`.-'`' -. ;-;;,_ igor AT watson DOT ibm DOT com |,4- ) )-,_. ,\ ( `'-' Igor Pechtchanski, Ph.D. '---''(_/--' `-'\_) fL a.k.a JaguaR-R-R-r-r-r-.-.-. Meow! If there's any real truth it's that the entire multidimensional infinity of the Universe is almost certainly being run by a bunch of maniacs. /DA -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/