Как автоматизировать дату в сгенерированном шаблоном файле с помощью Thunar [xfce4]
В XFCE4 можно установить шаблоны в ~/Templates, и они появятся в разделе "Создать документ" контекстного и файлового меню.
Теперь, допустим, я создал там шаблон Python (это может быть любой язык) со следующим фрагментом.
#! /usr/bin/env python
# -*- coding: utf-8 -*-
#################################################
# Author: Me
# Date: $(today)
#################################################
Мой вопрос, как этого добиться $(date)
автоматически заменяется текущей датой при создании нового файла с использованием шаблона. Решение должно работать для любого текстового шаблона, такого как tex, c, cpp, h, html, js, css и т. Д.
Учитывая, что Thunar очень легкий, очень вероятно, что это невозможно. Тем не менее, я хотел бы знать, есть ли обходной путь.
Спасибо!
1 ответ
AFAIK, вы не можете использовать только шаблоны для этого. Одним из обходных путей может быть объединение шаблонов с настраиваемыми действиями и сценарием bash.
подготовка
Сначала напишите скрипт, который при наличии файла заменит все вхождения строки $(date)
с фактической датой (в каком-то указанном формате). Например, создать ~/.local/bin/insert_date_into_template
с содержанием:
#!/bin/bash
# produce dd/mm/yyyy date, other formats possible
date=$(date +"%d/%m/%Y")
# see https://stackoverflow.com/questions/407523/escape-a-string-for-a-sed-replace-pattern
escaped_date=$(echo "$date" | sed 's/[\/&]/\\&/g')
sed -i 's/$(date)/'"$escaped_date"'/g' "$*"
и сделать его исполняемым (chmod u+x ~/.local/bin/insert_date_into_template
). С надеждой, ~/.local/bin/
уже в вашем $PATH
,
Затем определите новое настраиваемое действие, перейдя в "Правка"> "Настроить настраиваемые действия" в Thunar и щелкнув по значку "плюс" сбоку. Выберите подходящее имя (скажем, Insert date into template
) и описание, и установите команду insert_date_into_template %F
(или, если это не сработает, ~/.local/bin/insert_date_into_template %F
).
операция
Теперь, если вы хотите иметь новый файл, предварительно заполненный в соответствии с шаблоном, но с $(date)
Для замены на текущую дату необходимо выполнить два шага:
Создайте новый файл из шаблона, как вы это обычно делаете (щелкните правой кнопкой мыши, создайте документ и т. Д.).
Запустите пользовательское действие, щелкнув правой кнопкой мыши по вновь созданному файлу и выбрав
Insert date into template
(или как вы назвали пользовательское действие выше).
(Обратите внимание, что, очевидно, шаблон должен содержать строку $(date)
чтобы это имело какой-либо эффект. Также, очевидно, не вызывайте пользовательское действие на реальных, оригинальных шаблонах в ~/Templates
!)
Возможности для совершенствования
В принципе, процесс можно сжать до одного шага (а не двух), написав соответствующее настраиваемое действие. Тем не менее, в этом случае все может стать немного беспокойным, так как вам потребуется способ указать, какой шаблон (python, LaTeX, cpp и т. Д.) Вы хотите использовать. (Если zenity
доступно в Xubuntu, вы можете использовать это для выбора шаблона.)