是否可以在 shell 中更改写入 STDOUT 的行,类似于scp等许多程序的方式?
重点是让我基本上拥有一个自动收报机或某种监视器,而不会在整个屏幕上滚动。
\r
您可以通过打印字符来覆盖最后打印的行。
例如这个:
for i in `seq 1 10`; do
echo -n $i;
sleep 1;
echo -n -e "\r" ;
done
将打印1
然后更新它,2
依此类推,直到 10。
您可以使用管道中的另一个程序修改标准输出的输出。当您运行您使用的程序时 | 将输入通过管道传输到下一个程序。下一个程序可以对输出做任何事情。用于修改程序输出的通用程序是 sed,或者您可以自己编写一些东西来修改先前程序中的数据。
shell 程序类似于:
while read line; do
# do something with $line and output the results
done
所以你可以:
the_original_program | the_above_program