此函数输出一个字符串'hello',并在5秒后将其替换为终端中同一行上的另一个字符串'good-bye':
echo -ne 'hello\r'; sleep 5; echo 'good-bye'
我有一种情况,我希望通过多个ls
命令的输出实现相同的效果。第二个output
命令的ls
应该替换第一个ls
的整个输出。
例如:(我一步一步的执行)
someDir
命令的输出: someFile1
someFile2
ls
等待按键。 (或者像第一个例子中那样:睡5秒钟)
删除第一个ls
命令的整个输出(返回第一个位置)。
然后打印下一个-l
命令的输出(在本例中为someDir
选项):
someFile1
someFile2
echo -en "$(ls)\r"; sleep 5; echo "$(ls -l)"
我认为这应该有效:
{{1}}
但它没有...这只会打印输出两次,而不会用第二个替换第一个输出。
有没有人知道我需要做些什么来使这个工作(如果可能的话)?
我为什么需要这个?
这背后的想法是创建一个函数,它允许您以不同的方式显示目录的内容,方法是使用 k / <浏览具有不同选项集的ls命令数组kbd> j 前进和后退。这样您就不需要输入所有特定的ls命令来获得所需的输出。您只需浏览到您需要的选项集。
答案 0 :(得分:0)
我的想法是用第二个
ls
命令的整个输出替换第一个ls
命令的整个输出。
#!/bin/zsh
output=(${(@f)"$(ls)"}) # read output lines into array
print -l $output
sleep 5
echoti cuu $#output # move cursor up $#output lines
echoti ed # clear to end of screen
ls -l