AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 756778
Accepted
Manuel Jordan
Manuel Jordan
Asked: 2023-09-17 23:59:38 +0800 CST2023-09-17 23:59:38 +0800 CST 2023-09-17 23:59:38 +0800 CST

如何知道任何窗口终端的当前选项卡(编号或位置)是什么?

  • 772

ctrl对于 Ubuntu 和 Fedora,如果通过+ alt+打开窗口终端t,则可以通过shift+ ctrl+打开新选项卡t。假设存在一个带有 5 个选项卡的窗口终端。alt如果可能的话,通过+转到其中任何一个#(其中#可以是 1-5)...

现在,如果 Window 终端有更多选项卡,例如 9,10 ...

问题

  • 如何知道当前选项卡是什么?它的数量或位置。

它可以处理以下几种情况:

  • 如何知道稍后返回到哪里(假设当前选项卡是8,我们转到3,稍后需要它返回到8)。所以需要知道/得到 8。
  • 当前选项卡的下一个/上一个选项卡是什么(假设当前选项卡是 7,需要转到下一个选项卡 8)。所以需要知道/得到 7。

我尝试了该tty命令,但如果当前选项卡是 5,它会显示/dev/pts/4. 正如你所看到的N-1。直到这里可以应用一个简单的数学....有时会显示预期的直接值,例如/dev/pts/5。我不知道为什么会有这种差异。所以返回的值并不总是准确的。

更重要的是,如果在其他工作区中存在其他带有一些选项卡的Window Terminal,如果执行该tty命令,会出现一个随机数,它通常是前一个Window Terminal的最高选项卡+ 1的延续。因此,如果第一个窗口终端中的第一个选项卡有 5 个选项卡,第二个窗口终端中的第一个tty选项卡则显示/dev/pts/5(N-1) 或 直接/dev/pts/6。但符合预期/dev/pts/1,因此如果打开新选项卡,相关性应从 1 开始。

观察考虑是否有任何选项卡被移动(拖放)到其他位置,“命令”应反映新的位置/编号

注意即使这tty不是正确的命令,什么命令可以实现此目标?

command-line
  • 2 2 个回答
  • 28 Views

2 个回答

  • Voted
  1. Best Answer
    Marcus Müller
    2023-09-18T01:50:47+08:002023-09-18T01:50:47+08:00

    我假设您正在使用gnome-terminal,因为这是您在 Gnome 中使用的默认设置,Gnome 是这些平台上的默认桌面环境。(可能是因为你会说如果你使用不同的终端模拟器!)

    据我所知,没有这样的命令。在选项卡中执行的程序(在您的情况下,主要是 shell)对该选项卡知之甚少。这是不应该的!另外,“选项卡”和“虚拟控制台”(gnome 终端服务器,技术上可以用于在一个、多个或根本没有选项卡中显示某些 ptty)之间有一层间接层,所以,嗯,假设你总是在一个特定的选项卡中,这通常是行不通的。不过,它可能适用于您关心的情况。

    您可以做的是使用$GNOME_TERMINAL_SCREEN环境变量来获取有关正在运行的终端模拟器会话的信息。它包含一个 dbus 路径,但就“快速”内省告诉我们,我们可以获得打开的选项卡列表,可以在选项卡中执行命令,但仅此而已。

    因此,除了不存在这样的命令之外,看来您想要的东西是不可能的。


    解决您想要实现的目标:

    假设当前选项卡是8,我们转到3,稍后需要它返回到8

    您可以手动设置选项卡的当前标题(右键单击选项卡的标题,“设置标题...”),以便您知道哪个在哪里

    但老实说,这一切听起来就像您是一个“高级用户”,使用大量虚拟终端,并且gnome-terminal可能不是为您管理所有这些的工具。可以有多个可以一次显示的tmux所谓窗格,并且您可以有多个包含窗格的窗口(不要与 X11/wayland 意义上的窗口混淆),您可以对它们进行重命名、移动、重新排序、打开、接近……你内心的渴望。所有这一切都发生在单个 gnome-terminal 实例中。

    tmux对于来自图形世界的人来说有点令人困惑(我猜,每个人都是 1987 年之后出生的),但它的入门指南实际上还可以,当你从上到下阅读它并且不要试图跳进去时它的中间。您可以做一些聪明的事情,例如“嘿,我记得我正在其中运行一个窗格nvim,您可以在所有窗口中搜索该窗格吗?”。

    或许可以尝试一下。安装 tmux,然后tmux在 gnome 终端中运行。迎接您的是正常的 shell 和一条奇怪的小状态线。

    运行top以获得持续运行的系统负载监视器。因为我们想记住这是带有系统监视器的窗口,所以我们点击ctrl+ b,然后点击,。注意状态线!现在它要求我们为该窗口起一个新名称。我认为“系统监控”有效。由你决定。好吧,很好,似乎有键盘快捷键。我不记得很多键盘快捷键。所以我更喜欢 tmux 命令界面:按ctrl+ b,然后按:。您现在可以输入命令。我输入split -h,然后点击Enter(还有tab自动完成功能)。扎克,现在你的窗口中有两个窗格(h顺便说一下,水平分割)。我想监视磁盘上的可用空间,因此在新窗格中运行watch df -h。好的。

    现在我想要一个新的 tmux“窗口”。我记得组合键,ctrl+ bc(c如create)。我在其中运行我最喜欢的编辑器(在我的情况下,这将是nvim,但在你的情况下,它可能是emacs,,,,,vim......我不判断。)。 因为我想记住我在这里做了什么,所以我重命名了我的窗口。但这一次,我没有使用键盘快捷键(+ ),而是简单地运行什么的)。vinanoed
    ctrlbtmux rename-window "config edit"

    现在,我可以玩这个游戏一段时间,并在我的会话中拥有数百个窗口。状态栏列出了这些,但这真的有帮助吗?当然,使用ctrl+bf我现在可以搜索窗口,在我的编辑器变得缓慢之前,我开始给我奶奶写信,我检查了系统监视器,然后开始编辑一些配置文件......你明白了。


    ^dbus-send --session --print-reply --type=method_call --dest=org.gnome.Terminal "$GNOME_TERMINAL_SCREEN" org.freedesktop.DBus.Introspectable.Introspect

    ²dbus-send --session --print-reply --type=method_call --dest=org.gnome.Terminal /org/gnome/Terminal/screen org.freedesktop.DBus.Introspectable.Introspect

    • 2
  2. ctrl-alt-delor
    2023-09-18T03:13:05+08:002023-09-18T03:13:05+08:00

    Konsole使用环境变量。我不知道其他终端模拟器。

    #↳ set | grep -i kon
    KONSOLE_DBUS_SERVICE=:1.955
    KONSOLE_DBUS_SESSION=/Sessions/2
    KONSOLE_DBUS_WINDOW=/Windows/1
    KONSOLE_VERSION=221203
    

    看起来您需要使用SESSION/WINDOW元组来标识唯一的窗口,并且session= 选项卡。

    考虑tmux使用更强大的工具来执行此操作。

    • 1

相关问题

  • ip 命令是否支持通配符?

  • 需要许多参数的实用程序的推荐界面是什么?[关闭]

  • 远程运行 X 应用程序,在远程主机上运行 GUI [关闭]

  • 使 mysql CLI 以交互方式向我询问密码

  • 没有服务器的命令行 pub/sub?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve