首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行.sh文件后,返回到以前的提示符

运行.sh文件后,返回到以前的提示符
EN

Stack Overflow用户
提问于 2022-03-09 12:13:28
回答 2查看 137关注 0票数 0

example.sh:

代码语言:javascript
复制
x=0
while true
do
  x=$(expr $x + 1)
   clear    #to print no. @ same location
  printf "\n\n     $x"|figlet -f block
  sleep 1;

done

比如htop/c矩阵/vim/nano/bashtop等等.

运行完之后,我必须回到最后一个提示,

不像猫/找到/等..。

最近的解决方案是要在tmux会话中运行脚本。

我想的是,我不想失去我以前运行过的命令输出,

就像nano/vim/cmatrix一样,它清除屏幕,然后运行它,然后当我们退出它时,比如,^c/q,我们回到了提示符的位置,最后运行了命令和输出。

是否有命令执行此操作?

代码语言:javascript
复制
┌──(kali㉿kali)-[~]
└─$ vi

┌──(kali㉿kali)-[~]
└─$ nano

┌──(kali㉿kali)-[~]
└─$ cat copy
file contents

┌──(kali㉿kali)-[~]
└─$

在这里,我打开了nano,我打开了vim,但是你看不到我的内部vim或nano,但这不是cat的情况,它只是在同一个会话上打印它,而vim/nano/htop终端是干净的,sed/cat/ps就不是这样了。

我想要创建这样一个脚本,它不会影响终端会话(比如在另一个维度中运行的),

我试着阅读bashtop源代码,它也具有相同的行为,但是我找不到执行它的代码/命令

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-09 16:26:15

vimless以及许多其他工具访问终端的备用屏幕,然后在它们完成后恢复原始屏幕。您可以使用tput从shell脚本访问备用屏幕:

代码语言:javascript
复制
#!/bin/sh

tput smcup  # begin using the alternate screen

# ...

tput rmcup  # stop using alternate screen (restore terminal to original state)

请注意,当脚本结束时,您不希望留在备用屏幕中,因此您可能更愿意这样做:

代码语言:javascript
复制
#!/bin/sh

trap 'tput rmcup' 0
tput smcup
票数 2
EN

Stack Overflow用户

发布于 2022-03-10 06:33:42

在bashtop中,他们在以前的更新中使用了tput,然后将其更改为

代码语言:javascript
复制
#!/bin/sh

echo -en '\033[?1049h'  #* Switch to alternate screen

# codes to run inside

echo -en '\033[?1049l'  #* Switch to normal screen
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71409192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档