【问题标题】:How does this script for naming iTerm tabs work?这个用于命名 iTerm 选项卡的脚本是如何工作的?
【发布时间】:2012-01-11 16:43:37
【问题描述】:

我正在尝试命名我的 iTerm 选项卡并找到 this link. 这是该人帖子的相关部分:

我编写了一个简单的脚本,我称之为“nametab”,它允许您从命令行命名您所在的选项卡。您只需输入以下内容:

$ nametab New tab name

如果你想自己使用,这里是代码:

#!/bin/bash

# A simple script which will name a tab in iTerm
# usage:
# $ nametab New tab name

echo -ne "\033]0;"$@"\007"

我创建了一个目录$HOME/dev/bash_scripts 并在该目录中放置了一个名为nametab.sh 的文件。然后我切换到该目录并运行命令

chmod u+x nametab.sh

但是当我尝试通过键入 nametab.sh New tab hellooooo 来命名 iTerm 中的当前选项卡时,没有任何反应。我也试过nametab.sh hellooooo,没有任何反应。

你能帮我理解我不明白的地方吗?


更新:

echo TERM=$TERM

返回

TERM=xterm-256color

echo $PATH

返回

.:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:~/dev/bash_scripts

cat ~/dev/bash_scripts/nametab.sh

返回

#!/bin/bash

# A simple script which will name a tab in iTerm
# usage:
# $ nametab NewTabName

echo "trying to rename the current tab to $@"
echo -ne "\033]0;"$@"\007"
echo "finished"

nametab.sh hellooooo

返回

trying to rename the current tab to helloooo
finished

但标签名称始终保持不变。

顺便提一下,标签名称为

MindRoot (bash)

我正在运行 iTerm2。我尝试在/etc/bashrc 中完成我所有的 bash shell 配置。这样,无论我登录哪个用户帐户,我都会获得相同的 bash 终端行为。 /etc/bashrc的内容是

# System-wide .bashrc file for interactive bash(1) shells.
if [ -z "$PS1" ]; then
   return
fi

#PS1='\h:\W \u\$ '
# Make bash check its window size after a process completes
shopt -s checkwinsize

# ALL OF THE BELOW ADDED BY DEONOMO ON 2011-04-25

# custom prompt
PROMPT_HOSTNAME='MindRoot' 
PROMPT_COLOR='0;35m'

# If I am root, set the prompt to bright red
if [ ${UID} -eq 0 ]; then
PROMPT_COLOR='1;31m'
fi

PS1='\[\e]1;${PROMPT_HOSTNAME}\a\e]2;${PROMPT_HOSTNAME}:${PWD}\a\
\e[${PROMPT_COLOR}\]\
[\u@${PROMPT_HOSTNAME} \w]\n \#\$ \
\[\e[m\]'

#PS1="\e[0;45m\w:$ "

# added by Deonomo on 2011/09/12 in order to have textmate work as default editor
export EDITOR='mate -w'

# added by Deonomo on 2012-01-11 in order to start a dev/bash_scripts directory
export PATH="$PATH:~/dev/bash_scripts"

【问题讨论】:

  • 您可以尝试以./nametab.sh Hellooo 运行脚本吗?或者在脚本中添加一行以确保它已经运行。
  • 显然我无法将代码放入 cmets 框中,sigh 基本上,我添加了行 echo "trying to rename the current tab"echo "finished" 在读取 echo -ne "\033]0;"$@"\007" 的行之前和之后。现在,当我运行脚本时,它只打印这两行(“尝试重命名当前选项卡”然后“完成”),但我的选项卡名称没有改变。
  • 我在 'echo -ne "\033]0;"$ 行之前和之后添加了行 'echo "trying to rename the current tab"' 和 'echo "finished"' @"\007"'。现在,当我运行脚本时,它只打印这两行(“尝试重命名当前选项卡”然后“完成”),但我的选项卡名称没有改变。
  • sheesh -- 我怎样才能让灰色背景代码样式出现在这些评论框中? '测试'
  • 根据此链接 [link]stackoverflow.com/questions/6874404/… 命令 echo -e "\033];MY_NEW_TITLE\007" 应该更改我的标签名称,但它没有这样做。可能是我在 .bash_profile 或 .bashrc 文件中设置的其他内容阻止了命令工作?谢谢。

标签: bash shell iterm


【解决方案1】:

如果你想有一个别名来更改选项卡名称,你可以通过在 .profile/.bashrc 文件中定义一个函数来实现,如下所示:

function renametab () {
    echo -ne "\033]0;"$@"\007"
}

【讨论】:

    【解决方案2】:

    我遇到了同样的问题 - 但我看到选项卡名称短暂闪烁,然后回到原来的状态:shell 和 cwd。原来我有一个环境变量更改了每个 shell 命令上的选项卡名称,所以这为我修复了它:

    export PROMPT_COMMAND=''
    

    现在:echo -e "\033];MY_NEW_TITLE\007"

    .. 工作正常并持续存在。

    【讨论】:

    • 我怎样才能把它变成别名?这在 iterm2 中对我不起作用: alias tabname="echo -ne \"\033]0;"\$@"\007\""
    【解决方案3】:
    rename_tab () {
        TEXT=$1
        export PROMPT_COMMAND='echo -ne "\033]0;${TEXT}\007"'
    }
    

    这是一个函数。您可以将其添加到您的~/.bashrc(或类似的东西,如~/.bash_profile)。要重命名选项卡,您可以这样做:

    $ rename_tab 'NEW NAME HERE'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-14
      • 2011-01-08
      • 1970-01-01
      相关资源
      最近更新 更多