栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

我为您提供了一些答案:)您说对了,使用gnome-
terminal无关紧要,但是使用什么命令外壳都没有关系。在中

zsh
,这要容易得多,但是在接下来的内容中,我将假设您正在使用
bash
,并且它是一个相当新的版本(>
3.1)。

首先:

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

有一个环境变量,它或多或少具有您想要的-

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

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

我一直在考虑这个问题,现在我了解了您想做什么,我意识到真正的问题是您需要 每个命令 之前
更新标题。这意味着

$prompt_COMMAND
and
$PS1
环境变量是不可能的解决方案,因为它们仅 命令返回 执行。

在中

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

trap 'printf "33]0;%s07" "${BASH_COMMAND//[^[:print:]]/}"' DEBUG

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

function settitle () {    export PREV_COMMAND=${PREV_COMMAND}${@}    printf "33]0;%s07" "${BASH_COMMAND//[^[:print:]]/}"    export PREV_COMMAND=${PREV_COMMAND}' | '}export prompt_COMMAND=${prompt_COMMAND}';export PREV_COMMAND=""'trap 'settitle "$BASH_COMMAND"' DEBUG

但我不保证它是完美的!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/394293.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号