7

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.

1
  • Is /bin/sh a symlink to /bin/bash on your system?
    – Kirk
    Jun 21, 2011 at 16:55

3 Answers 3

5

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.

1

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.

0

If you want to code for bash, you should say so in your shebang line:

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

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .