如何使用 Thunar 自动生成模板文件中的日期

如何使用 Thunar 自动生成模板文件中的日期

在 XFCE4 中,可以在 ~/Templates 中安装模板,它们将出现在上下文和文件菜单的创建文档条目下。

现在,假设我使用以下代码片段在那里创建一个 Python 模板(可以是任何语言)。

#! /usr/bin/env python
# -*- coding: utf-8 -*-
#################################################
# Author: Me
# Date:   $(today)
#################################################

我的问题是如何实现$(date)使用模板创建新文件时自动用当前日期替换。该解决方案适用于任何基于文本的模板,如 tex、c、cpp、h、html、js、css 等。

考虑到 Thunar 非常轻量,这很可能是不可能的。不过,我想知道是否有解决方法。

谢谢!

答案1

据我所知你不能使用仅有的模板。一种解决方法是将模板与自定义操作和一个 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 等)。(如果zenityXubuntu 中可用,您可以使用它来选择模板。)

相关内容