bash :с новой строкой или без нее при печати внутри функции?

Вы можете просто перенаправить вывод в файл и $(date...)как часть имени файла.

напр.:

/path/to/backup_script.sh > /path/to/log/backup_$(date +%F).log

или то же самое в скрипте:

rsync -av... > /path/to/log/backup_$(date +%F).log
0
14.11.2020, 17:16
2 ответа

Зависит. Если вы всегда смотрите на точный вывод, как с xxdвыше, то новая строка может быть просто неприятностью. Но для общего использования учтите, что такие утилиты, как uname, uptime, dateи вообще любые подобные действительно печатают завершающую новую строку, так что это определенно обычай. Если программа, запущенная в командной строке, не печатает эту завершающую новую строку, многие оболочки будут печатать приглашение в той же строке, что выглядит некрасиво (ниже ). Также, например. подстановка команд удаляет завершающие символы новой строки только для того, чтобы компенсировать это.

bash$ date -u | tr -d '\n' 
Sat 14 Nov 2020 03:48:19 PM UTCbash$ 
5
18.03.2021, 22:49

Некоторые случаи, когда предпочтительнее завершающий символ новой строки:

  • Вывод должен быть удобочитаемым для человека. Многие подсказки ($PS1, содержащие возврат каретки, )перезаписывают часть или всю последнюю строку вывода команды, если только она не заканчивается новой строкой.
  • Вывод представляет собой серию записей, по одной в строке. Анализировать новую строку-завершенных строк проще, чем синтаксический анализ новой строки-разделенных строк при использовании стандартных инструментов оболочки, таких как read.
  • Ведение журнала, которое в идеале является лишь частным случаем вышеизложенного. То есть, если вы не используете какой-то пользовательский формат, который действительно не предназначен для потребления человеком.
2
18.03.2021, 22:49

Теги

Похожие вопросы