I'm trying to create a shell script to take an argument and use it to name a terminal tab. So if the script's name is tabnm, tabnm "test" should rename the current tab "test"

This is my code:

#!/bin/sh
echo -ne "\e]1;$1\a"

but when i run it I get this output:

robin@icarus $ sh tabnm.sh test
-ne \e]1;test

If I just run echo -ne "\e]1;Test\a" straight in the shell, the tab is renamed.

link|improve this question
Is /bin/sh a symlink to /bin/bash on your system? – Kirk Jun 21 '11 at 16:55
feedback

2 Answers

up vote 2 down vote accepted

That would be the difference between echo in /bin/sh vs. your interactive shell. I suggest using printf instead, and see The UNIX and the echo.

link|improve this answer
feedback

The problem is that your shell recognizes different escape codes than your /bin/sh.

/bin/sh probably doesn't recognize \e as the escape character. Try \033 instead.

You can also replace \a by the equivalent code\007 and see if that works.

link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.