【问题标题】:Rename Terminal Tabs Automatically with command使用命令自动重命名终端选项卡
【发布时间】:2016-06-07 20:56:47
【问题描述】:

我正在尝试重命名 OSX 中打开的终端选项卡,但我只能使用以下代码更改终端标题。有没有办法用命令改变标签标题?我在 python 2.7 中使用 osascript。

name = """osascript -e 'tell application "Terminal" to set custom title in selected tab of the front window to "script_1"'"""
os.system(name)

手动:Shell > 编辑标题(SHIFT+COMMAND+I) > Tab Title

【问题讨论】:

    标签: python macos shell terminal osascript


    【解决方案1】:

    使用 $title 对我不起作用,但这样做:

    >>> t = 'echo -n -e "\033]0;%s\007"' % title
    >>> t
    'echo -n -e "\x1b]0;Customized title for TAB\x07"'
    >>> os.system(t)
    -e 0
    >>> 
    

    【讨论】:

    • 它和我的代码一样。它会更改终端标题而不是选项卡标题。
    • 我在 lubuntu linux (LXTerminal 0.1.11) 上,它更改了活动选项卡中的选项卡和标题。 Osx 正在使用不同的终端。我不是这方面的专家,但我修修补补,并让它发挥作用。我认为在 python 中设置变量可能存在问题,然后期望 shell 知道它是一个环境变量。
    • 我猜这是 Osx 问题,而不是 python,我在 Ubuntu 上尝试过,它可以工作。但我认为没有选项可以更改标签标题是 Osx。
    • 找出你的终端程序是什么,并搜索可能控制它的魔法字符串
    • 希望两者都做同样的事情... \033(八进制33,27l)与\x1b(十六进制,也是27)完全相同。两者都意味着“这是一个转义码”。后跟命令 0、标题,然后以 char 7 结束。也许有些 shell 不解释八进制,有些不解释十六进制?
    【解决方案2】:

    我发现这个非常有用,因为它不会将不必要的输出打印到标准输出,这与我对 subprocess 或 os.system 的实验不同,这会导致控制台中出现不需要的“-e”。

    import sys
    sys.stdout.write("\x1b]2;%s\x07" % 'TAB name')
    

    【讨论】:

      【解决方案3】:

      应该这样做:

      title='Customized title for TAB'
      os.system('echo -n -e "\033]0;{}\007"'.format(title))
      

      【讨论】:

      • 只是更改标题,而不是“标签”标题。两者在 mac 终端中是不同的。
      【解决方案4】:

      这是使用按键打开检查器、更改标题和关闭检查器的解决方案。因为根据我的研究,没有选项可以使用现成的苹果脚本更改 OSX 上的选项卡标题。

      效果很好,因此无需等待 Apple 发布此选项。

      tabinspector = """osascript -e 'tell application "System Events" to keystroke "i" using {shift down,command down}'"""
      pressstab = """osascript -e 'tell application "System Events" to keystroke Tab'""" 
      title = """osascript -e 'tell application "System Events" to keystroke "yourtitlehere"'"""
      pressesc = """osascript -e 'tell application "System Events" to key code 53'"""
      
      os.system(tabinspector)
      os.system(pressstab)
      os.system(title)
      os.system(pressesc)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-02-28
        • 1970-01-01
        • 1970-01-01
        • 2010-09-27
        • 1970-01-01
        • 1970-01-01
        • 2011-07-22
        • 2012-06-08
        相关资源
        最近更新 更多