Ошибка экспорта вывода оболочки bash в текстовый файл - PullRequest
0 голосов
/ 20 апреля 2020

Ниже мой код:

#!/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!

, когда я запускаю, он работает нормально и отображает весь код на экране, однако, когда я сохраняю в текстовый файл, используя ./keithbrazill.sh> keithbrazill.txt , он не показывает весь вывод текста и только вывод части. Любой совет? Я пробовал несколько разных вариантов команды вывода, таких как &>, >> et c.

1 Ответ

0 голосов
/ 20 апреля 2020

Вот более простой способ воспроизвести проблему:

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

Это происходит потому, что top - это программа ncurses, которая выводит последовательности управления терминалом, чтобы рисовать себя в полноэкранном режиме, перезаписывая все, что уже есть на экране. Несмотря на то, что все данные попадают в файл, в текстовом редакторе будет отображаться много гиббери sh, а если вы его cat, последовательности терминала перезапишут вывод других команд.

Вы можете использовать top -b -n 1, чтобы вместо этого получить вывод в виде открытого текста.

...