当前位置: 首页 > 面试题库 >

Bash-通过运行第二条命令来更新终端标题

吕冠宇
2023-03-14
问题内容

在Ubuntu的终端上,我经常运行长时间运行的程序。而且由于有很多这样的程序,除非我将所有这些选项卡一一列出,否则我一直忘了哪个终端适用于哪个程序。因此,我想找到一种方法,无论何时运行命令,都将我的终端标题更新为程序名称。我不想手动做。

我使用gnome-
terminal,但是答案不应该真的依赖于此。基本上,如果我能够运行第二条命令,那么我只需使用gconftool命令来更新标题。所以我希望找到一种方法来捕获bash中的命令并在每个命令之后更新标题。我怎么做?


问题答案:

我为您提供了一些答案:)您说对了,使用gnome-
terminal无关紧要,但是使用什么命令外壳都没有关系。在中zsh,这要容易得多,但是在接下来的内容中,我将假设您正在使用bash,并且它是一个相当新的版本(>
3.1)。

首先:

哪个环境变量将包含当前的“命令”?

有一个环境变量,它或多或少具有您想要的-
$BASH_COMMAND。只有一个小障碍,那就是它只会向您显示管道中的最后一条命令。我不是100%不确定子壳组合会做什么:)

所以我希望找到一种方法来捕获bash中的命令并在每个命令之后更新标题。

我一直在考虑这个问题,现在我了解了您想做什么,我意识到真正的问题是您需要 每个命令 之前
更新标题。这意味着$PROMPT_COMMANDand $PS1环境变量是不可能的解决方案,因为它们仅 命令返回 执行。

在中bash,我可以想到的唯一实现目标的方法是(ab)使用DEBUG SIGNAL。所以这是一个解决方案-将此粘贴在您的末尾.bashrc

trap 'printf "\033]0;%s\007" "${BASH_COMMAND//[^[:print:]]/}"' DEBUG

为了解决管道问题,我一直在弄乱这个问题:

function settitle () {
    export PREV_COMMAND=${PREV_COMMAND}${@}
    printf "\033]0;%s\007" "${BASH_COMMAND//[^[:print:]]/}"
    export PREV_COMMAND=${PREV_COMMAND}' | '
}

export PROMPT_COMMAND=${PROMPT_COMMAND}';export PREV_COMMAND=""'

trap 'settitle "$BASH_COMMAND"' DEBUG

但我不保证它是完美的!



 类似资料:
  • 问题内容: 通过终端执行时正在工作。但不是通过QProcess 我的示例代码是 在textedit上什么都没有显示。 但是当我仅在qprocess的开头使用时,输出将显示在textedit上。我是否错过了构造命令的任何技巧,例如for 和for ?特殊字符?但我也尝试过 问题答案: QProcess执行一个进程。您要执行的操作是执行 Shell命令 ,而不是进程。命令管道是Shell的功能。 有三

  • 一些注意事项: 1。我最初使用的TestNG jar来自java项目中的maven repo。下面的所有方法都是用maven testNG jar和新的TestNG6.9.12下载进行测试的。 2。我可以从Eclipse中运行这个文件。只有当我尝试从命令行运行时才有问题。 3。最终目标是通过javafx应用程序按钮触发命令行来运行测试。如果提供的解决方案避免在cmd中键入绝对路径,因为应用程序将在

  • 问题内容: 我试图打开一个终端并在其中运行命令。我在用 这将打开一个新的终端,但是命令不会执行。 问题答案: 该命令将新运行的进程替换为新进程,因此,如果要在要运行的命令列表中有一个exec,则在exec运行后,其他任何命令都将不会运行。因此,您要替换为,然后在运行之后再执行任何操作。尝试以下方法: 或者如果您需要终端保持打开状态,请尝试以下操作: 如果您希望终端保持打开状态并处于bash she

  • 我正在尝试创建一个bash。sh脚本文件,使用osascript打开一个新的终端窗口/选项卡,然后运行两个命令“cd fs”和“gulp”(都在同一窗口/选项卡中) 这就是我正在尝试的,它在另一个(第三个)窗口/选项卡中运行第二个命令(做脚本“大口吃”),而不是打开的第二个。

  • 问题内容: 我发现了几个用于通过Java类运行cmd命令的代码段,但我无法理解。 这是打开cmd的代码 我找到了一些其他链接来添加其他命令,例如cd http://www.coderanch.com/t/109753/Linux-UNIX/exec-command-cd-command-java 如何使用Java打开命令提示符并插入命令? 谁能帮助我了解如何CD目录,例如: 然后在该目录上运行其他

  • 我找到了几个通过Java类运行cmd命令的代码片段,但我无法理解。 这是打开命令的代码 我还找到了一些添加其他命令的链接,比如cdhttp://www.coderanch.com/t/109753/Linux-UNIX/exec-command-cd-command-java 如何使用Java打开命令提示符并插入命令? 有人能帮我了解如何cd目录,例如: 然后在该目录上运行其他命令?