mac unix:通过命令获取我正在使用的终端的名称

pftdvrlh  于 2022-11-23  发布在  Unix
关注(0)|答案(1)|浏览(168)

我正在寻找一个终端命令,它将在我正在使用的当前终端中打开一个新选项卡。例如,我在iTerm 2中运行该命令,并在iTerm2中打开一个新选项卡,因为这是我正在使用的终端。
我知道如何通过命名一个静态应用程序来打开一个选项卡,如下所示:

osascript -e 'tell application "iTerm" to activate' \
     -e 'tell application "System Events" to tell process "iTerm" to keystroke "t" using command down'

当然,如果我在Mac的终端上调用命令,这仍然会打开iTerm。我很想做下面这样的事情,但是我不知道如何获得我正在使用的终端的名称。

currentTerminal = getCurrentTerminalApplicationName()

osascript -e 'tell application "&{currentTerminal}" to activate' \
         -e 'tell application "System Events" to tell process "&{currentTerminal}" to keystroke "t" using command down'

我也愿意接受其他想法。

jpfvwuh4

jpfvwuh41#

而在macOS端子内部:

env | grep TERM
TERM_PROGRAM=Apple_Terminal

而在iTerm2内部:

env | grep TERM
TERM_PROGRAM=iTerm.app

更新

您可以随时这样做:

#!/bin/bash

if [ "$TERM_PROGRAM" == "iTerm.app" ]; then
  echo "iTerm2"

cat <<EOF >/tmp/file.py
import iterm2

async def main(connection):
    app = await iterm2.async_get_app(connection)
    window = app.current_terminal_window
    if window is not None:
        await window.async_create_tab()
    else:
        print("No current window")

iterm2.run_until_complete(main)
EOF

$HOME/Library/Application\ Support/iTerm2/iterm2env-3.10/versions/3.10.4/bin/python /tmp/file.py

else
  echo "not iTerm2"
fi

此代码将在iTerm2内打开新选项卡-否则,它将不执行任何操作。

相关问题