Как автоматизировать дату в сгенерированном шаблоном файле с помощью 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) Для замены на текущую дату необходимо выполнить два шага:

  1. Создайте новый файл из шаблона, как вы это обычно делаете (щелкните правой кнопкой мыши, создайте документ и т. Д.).

  2. Запустите пользовательское действие, щелкнув правой кнопкой мыши по вновь созданному файлу и выбрав Insert date into template (или как вы назвали пользовательское действие выше).

(Обратите внимание, что, очевидно, шаблон должен содержать строку $(date) чтобы это имело какой-либо эффект. Также, очевидно, не вызывайте пользовательское действие на реальных, оригинальных шаблонах в ~/Templates!)

Возможности для совершенствования

В принципе, процесс можно сжать до одного шага (а не двух), написав соответствующее настраиваемое действие. Тем не менее, в этом случае все может стать немного беспокойным, так как вам потребуется способ указать, какой шаблон (python, LaTeX, cpp и т. Д.) Вы хотите использовать. (Если zenity доступно в Xubuntu, вы можете использовать это для выбора шаблона.)

Другие вопросы по тегам