将bash shell输出导出到文本文件时出现问题



下面是我的代码:

#!/bin/bash
echo 1. date
date
echo -e "n"
echo 2. hostname
hostname
echo -e "n"
echo 3. arch
arch
echo -e "n"
echo 4. uname -a
uname -a
echo -e "n"
echo 5.uptime
uptime
echo -e "n"
echo 6. whoami
whoami
echo -e "n"
echo 7. who
who
echo -e "n"
echo 8. last
last
echo -e "n"
echo 9. finger
finger
echo -e "n"
echo 10. w
w
echo -e "n"
echo 11. top
top -n 1
echo -e "n"
echo 12. history
tail -100 ${HOME}/.bash_history
echo -e "n"
echo End of Script!

当我运行它时,它运行良好,并在屏幕上显示所有代码,但当我使用保存到txt文件时/keithbrazill.sh>keithbragill.txt,它不显示所有文本输出,只显示部分输出。有什么建议吗?我尝试了一些不同的输出命令变体,如&>、>>等

这里有一种更容易重现问题的方法:

echo "Hello"; whoami     # Shows output from both commands
echo "World"; top -n 1   # Shows output only from top

之所以会发生这种情况,是因为top是一个ncurses程序,它输出终端控制序列来绘制自己的全屏,覆盖屏幕上已经存在的任何内容。虽然所有数据最终都在文件中,但它会在文本编辑器中显示大量胡言乱语,如果cat,则终端序列将覆盖其他命令的输出。

您可以使用top -b -n 1来获得纯文本输出。

最新更新