当我启动一个新的终端时,提示在第一行。工作了一会儿(或运行产生一些输出的命令)后,提示在最后一行。除非我按Ctrl- l,运行clear
或reset
类似命令,否则它将在剩下的会话中保留下来。
为了获得某种程度的连续性,我使用screen
了一个技巧来在标题中显示会话名称(我在中的两个screen
命令中使用了最后一个.screenrc
)。
为了避免由于工作区域混乱而造成的认知开销,我希望此标题显示在终端的顶部。
当我启动一个新的终端时,提示在第一行。工作了一会儿(或运行产生一些输出的命令)后,提示在最后一行。除非我按Ctrl- l,运行clear
或reset
类似命令,否则它将在剩下的会话中保留下来。
为了获得某种程度的连续性,我使用screen
了一个技巧来在标题中显示会话名称(我在中的两个screen
命令中使用了最后一个.screenrc
)。
为了避免由于工作区域混乱而造成的认知开销,我希望此标题显示在终端的顶部。
Answers:
您很幸运,屏幕确实会执行保存并重新执行命令。因此,使用bash即可完成。
这说明如何使用特殊的转义序列来移动光标。您可以编写“ Hello World!” 到左上角:
echo -e "\033[s\033[2;0HHello World! \n \033[u"
解释:字符\033[s
保存了当前光标位置,这就是我们希望b / c屏幕终端大小可以变化很多的原因。然后\033[2;0
将光标移到第三行到第一个字符(我们从左上角开始以0开始计数)。然后是文本和可能的一点说明。最后,代码\033[u
将光标放回\033[s
被执行的位置。
此示例将光标移动到第二行,因为发出命令时将打印2行换行符,因此当前的第三行将是第一行。
您可以将其与会话标题一起使用,您可以通过已链接的说明获得会话标题。
screen $SHELL -c 'echo -n "$(tput sc)$(tput cup 0 0)${STY}$(tput rc)"'
,screen $SHELL -c 'screen -X caption always "$(tput sc)$(tput cup 0 0)${STY}$(tput rc)"'
但是都没有用。有任何想法吗?
screen -X caption always; screen -X caption string "%t"
。如果要将当前标题放在左上角,则必须修改PS1
环境变量以包含tput
魔术。
tput
与终端无关的方式来执行此操作,而无需对那些转义码进行硬编码。例如:echo -n "$(tput sc)$(tput cup 0 0)----Hello, world----$(tput rc)"