Как автоматизировать дату в файле, созданном шаблоном, с помощью 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
задан 21 January 2019 в 01:08

1 ответ

AFAIK Вы не можете использовать только шаблоны для этого. Одно обходное решение могло быть должно объединить шаблоны с пользовательскими действиями и сценарием удара.

Подготовка

Во-первых, запишите сценарий, который при предоставлении файла заменит все случаи строки $(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, ЛАТЕКС, cpp и т.д.) Вы хотите использовать. (Если zenity доступно в Xubuntu, Вы могли бы использовать это для выбора шаблона.)

0
ответ дан 7 December 2019 в 21:38

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

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