example.sh:
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,我们回到了提示符的位置,最后运行了命令和输出。
是否有命令执行此操作?
┌──(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源代码,它也具有相同的行为,但是我找不到执行它的代码/命令
发布于 2022-03-09 16:26:15
vim和less以及许多其他工具访问终端的备用屏幕,然后在它们完成后恢复原始屏幕。您可以使用tput从shell脚本访问备用屏幕:
#!/bin/sh
tput smcup # begin using the alternate screen
# ...
tput rmcup # stop using alternate screen (restore terminal to original state)请注意,当脚本结束时,您不希望留在备用屏幕中,因此您可能更愿意这样做:
#!/bin/sh
trap 'tput rmcup' 0
tput smcup发布于 2022-03-10 06:33:42
在bashtop中,他们在以前的更新中使用了tput,然后将其更改为
#!/bin/sh
echo -en '\033[?1049h' #* Switch to alternate screen
# codes to run inside
echo -en '\033[?1049l' #* Switch to normal screenhttps://stackoverflow.com/questions/71409192
复制相似问题