Данную публикацию, вспомнив творение Ильфа и Петрова, можно было бы назвать и "Наш ответ Чемберлену".
Предыстория заключается в том, что обмене "письмами" в виде файлов (подробности) один из моих респондентов в конце каждого из своих сообщений приводит высказывание кого-либо из рок-музыкантов. Вот и захотелось ответить ему "тем же самым по тому же месту". Чем я хуже? Однако, не имея желания искать какую-либо цитату специально, решил возложить это на плечи операционной системы.
Решаем поставленную задачу поэтапно.
В приводимых ниже примерах $sm и $dm означают указания каталогов источника sm и назначения dm. Пути к этим каталогам должны быть указаны, например
sm=/home/user/Источник
dm=/home/user/Получатель
Или, так как скрипт будет запускаться в ходе действующего пользовательского сеанса,
sm=$HOME/Источник
dm=$HOME/Получатель
1. Обеспечиваем вывод цитаты из программы fortune в текстовый файл, который будет именоваться citata.txt
fortune > $sm/citata.txt
Для установки и настройки fortune ознакомьтесь с публикацией "Цитаты в терминале".
2. Создаём файл txt, к которому впоследствии будет приклеен файл citata.txt Файлу присвоим имя probel.txt, поскольку он действительно содержит несколько переводов строк, после которых должно следовать содержание файла citata.txt Чтобы эти переводы строк не пропали после сохранения файла впишем в нужном месте "Цитата:"
3. Склеим эти два файла в итоговый начальный файл initial.txt
Данная операция производится средствами bash При этом указывается порядок: сначала probel.txt, потом citata.txt
cat $sm/probel.txt $sm/citata.txt > $sm/initial.txt
Содержание файла initial.txt для одного из запусков приводится ниже.
4. Преобразуем файл initial.txt в файл initial.odt
Имеется стандартный способ:
soffice --headless --convert-to odt $sm/initial.txt
Результат будет сохранён в домашний каталог пользователя системы.
Лично мне больше понравился второй вариант. Разница между ними в том,что при использовании стандартного способа файл odt формируется с использованием шрифта Liberation Mono 10 pt, а при использовании второго – serif 12 pt.
Использование втрого варианта требует установки в систему дополнительного пакета wordgrinder
sudo apt install -y wordgrinder
Преобразование выполняется командой
wordgrinder -c $sm/initial.txt $sm/initial.odt
Результат выполнения:
5. В дальнейшем файл переименовывается по шаблону дата.часов-минут, где под датой понимается текущий день по счёту от начала года, и открывается на редактирование.
День по счёту от начала года, текущий час и текущая минута задаются через команду date:
day=`date '+%j'`
hour=`date '+%H'`
min=`date '+%M'`
Если файл будет всегда только один, то в его имени можно ограничиться только датой или днём от начала месяца, например:
day=`date '+%j'` – имя файла будет 155
day=`date '+%m.%d'` – имя файла будет 06.04
day=`date '+%m-%d'` – имя файла будет 06-04
Копирование из источника в получатель, переименование, открытие:
cp $sm/initial.odt $dm/initial.odt
mv $dm/initial.odt $dm/$day.$hour-$min.odt
xdg-open $dm/$day.$hour-$min.odt
7. Результирующий скрипт на bash, оформленный в исполняемый файл sh, на который можно сделать кнопку запуска (пример):
#!/bin/bash
sm=$HOME/scripts/sources
dm=$HOME/Отправка/user-1
day=`date '+%j'`
hour=`date '+%H'`
min=`date '+%M'`
fortune > $sm/citata.txt
cat $sm/probel.txt $sm/citata.txt > $sm/initial.txt
wordgrinder -c $sm/initial.txt $sm/initial.odt
cp $sm/initial.odt $dm/initial.odt
mv $dm/initial.odt $dm/$day.$hour-$min.odt
xdg-open $dm/$day.$hour-$min.odt
exit
Предыстория заключается в том, что обмене "письмами" в виде файлов (подробности) один из моих респондентов в конце каждого из своих сообщений приводит высказывание кого-либо из рок-музыкантов. Вот и захотелось ответить ему "тем же самым по тому же месту". Чем я хуже? Однако, не имея желания искать какую-либо цитату специально, решил возложить это на плечи операционной системы.
Решаем поставленную задачу поэтапно.
В приводимых ниже примерах $sm и $dm означают указания каталогов источника sm и назначения dm. Пути к этим каталогам должны быть указаны, например
sm=/home/user/Источник
dm=/home/user/Получатель
Или, так как скрипт будет запускаться в ходе действующего пользовательского сеанса,
sm=$HOME/Источник
dm=$HOME/Получатель
1. Обеспечиваем вывод цитаты из программы fortune в текстовый файл, который будет именоваться citata.txt
fortune > $sm/citata.txt
Для установки и настройки fortune ознакомьтесь с публикацией "Цитаты в терминале".
2. Создаём файл txt, к которому впоследствии будет приклеен файл citata.txt Файлу присвоим имя probel.txt, поскольку он действительно содержит несколько переводов строк, после которых должно следовать содержание файла citata.txt Чтобы эти переводы строк не пропали после сохранения файла впишем в нужном месте "Цитата:"
3. Склеим эти два файла в итоговый начальный файл initial.txt
Данная операция производится средствами bash При этом указывается порядок: сначала probel.txt, потом citata.txt
cat $sm/probel.txt $sm/citata.txt > $sm/initial.txt
Содержание файла initial.txt для одного из запусков приводится ниже.
4. Преобразуем файл initial.txt в файл initial.odt
Имеется стандартный способ:
soffice --headless --convert-to odt $sm/initial.txt
Результат будет сохранён в домашний каталог пользователя системы.
Лично мне больше понравился второй вариант. Разница между ними в том,что при использовании стандартного способа файл odt формируется с использованием шрифта Liberation Mono 10 pt, а при использовании второго – serif 12 pt.
Использование втрого варианта требует установки в систему дополнительного пакета wordgrinder
sudo apt install -y wordgrinder
Преобразование выполняется командой
wordgrinder -c $sm/initial.txt $sm/initial.odt
Результат выполнения:
5. В дальнейшем файл переименовывается по шаблону дата.часов-минут, где под датой понимается текущий день по счёту от начала года, и открывается на редактирование.
День по счёту от начала года, текущий час и текущая минута задаются через команду date:
day=`date '+%j'`
hour=`date '+%H'`
min=`date '+%M'`
Если файл будет всегда только один, то в его имени можно ограничиться только датой или днём от начала месяца, например:
day=`date '+%j'` – имя файла будет 155
day=`date '+%m.%d'` – имя файла будет 06.04
day=`date '+%m-%d'` – имя файла будет 06-04
Копирование из источника в получатель, переименование, открытие:
cp $sm/initial.odt $dm/initial.odt
mv $dm/initial.odt $dm/$day.$hour-$min.odt
xdg-open $dm/$day.$hour-$min.odt
7. Результирующий скрипт на bash, оформленный в исполняемый файл sh, на который можно сделать кнопку запуска (пример):
#!/bin/bash
sm=$HOME/scripts/sources
dm=$HOME/Отправка/user-1
day=`date '+%j'`
hour=`date '+%H'`
min=`date '+%M'`
fortune > $sm/citata.txt
cat $sm/probel.txt $sm/citata.txt > $sm/initial.txt
wordgrinder -c $sm/initial.txt $sm/initial.odt
cp $sm/initial.odt $dm/initial.odt
mv $dm/initial.odt $dm/$day.$hour-$min.odt
xdg-open $dm/$day.$hour-$min.odt
exit
Комментариев нет:
Отправить комментарий