LibreOffice.org:从命令行创建新文件

LibreOffice.org:从命令行创建新文件

我喜欢我的命令行。我喜欢我可以输入:

emacs non-existing-file.txt

然后emacs将开始编辑一个尚不存在的文件,但如果我保存它,它将被称为non-existing-file.txt.

我也很喜欢 LibreOffice.org,但我一直无法找到一种方法来完成同样的任务,就像我可以使用的那样emacs

lowriter non-existing.odt

将打开 LibreWriter,但不会创建文件。相反,它会抱怨该文件不存在。

有没有一种方法可以让我从命令行知道lowriter我想在这个名为 的目录中启动一个新文件non-existing.odt

答案1

这个功能是2002 年请求 OpenOffice2011 年 LibreOffice。截至目前,这两个项目都尚未实施。

解决方法是在某处创建一个空白文件,然后复制一份以创建新文件。但是,这会保留原始创建的元数据,例如创建日期,因此结果与创建新文档不同。未经测试。

#!/bin/sh
# Create a new file if the argument does not exist. Do it only if there is a single
# argument and no option.
if [ $# -eq 1 ]; then
  case "$1" in
    -*) :;;
    *)
      if ! [ -e "$" ]; then
        basename="${1##*/}"
        case "$basename" in
          *.*)
            extension="${basename##*.}"
            cp ~/templates/default."$extension" "$1" || exit $?
        esac
      fi;;
  esac
fi

exec loffice "$@"

转换空文件可以创建文本文档 ( .odt),但不能创建其他类型的文档(使用 Libreoffice 5.1.6.2)。我不知道为什么。

#!/bin/sh
set -e
# Create a new file if the argument does not exist. Do it only if there is a single
# argument and no option.
if [ $# -eq 1 ]; then
  case "$1" in
    -*) :;;
    *)
      if ! [ -e "$" ]; then
        basename="${1##*/}"
        case "$basename" in
          *.*)
            extension="${basename##*.}"
            empty_file=$(mktemp)
            unoconv -f "$extension" -o "$1" "$empty_file"
            rm -f "$empty_file"
        esac
      fi;;
  esac
fi

exec loffice "$@"

答案2

问题及解决方案

我希望这将是可用的,但事实并非如此!我最近一直在做一些工作申请,每次都手动创建新的简历/求职信很乏味。

我的解决方案是创建一个名为“base”的目录,其中存储简历和求职信。

然后,bash 脚本将保存在其他地方的不同“脚本”文件夹中。它被命名为“apply.sh”。

代码、示例和文件结构

创建新简历(或简历)文件的示例:

apply.sh -r important_business_job

# creates...

~/.../your_job_applications_folder/cv_your_name_here_important_business_job.docx

我使用的代码在这里:

# Takes a CV or cover letter and copies it with the role name changed.
#! /bin/bash

if getopts c:r: name
then
    case $name in
        c)OUTFILE= cover_letter_your_name_here_${OPTARG}.docx; INFILE=base/base_cover_letter.docx;;
        r)OUTFILE=cv_your_name_here_${OPTARG}.docx; INFILE=base/base_cv.docx;;
        *)echo "Invalid argument. Please select either 'r' for resume or 'c' for cover letter";;
    esac
    cp $INFILE $OUTFILE
else
    echo "Please select the type of file to create (either 'r' for resume or 'c' for cover letter)"
fi

shift $(($OPTIND -1))

文件结构:

your_job_applications_folder
├── base
│   ├── base_cover_letter.docx
│   └── base_cv.docx
└── NEW_FILES_GO_HERE

那么,这与这篇文章有何关系?

使用相同的“基本”文件夹设置,可以更改代码以每次从 base.docx 文档复制空白文档,从而有效地创建新文档。但是,这可能会保留原始元数据......

相关内容