如果您经常在编辑器中编写HTML,然后粘贴到WordPress中,您会注意到有时会添加恼人的格式标记(如标记)。使用简单的shell脚本,您可以通过几个简单的命令自动清除那些垃圾HTML格式。
为什么使用shell脚本?如果你是编程新手,从小事做起会更好。不仅你不太可能放弃,而且你还有机会停下来学习。也就是说,你的第一个程序可以非常有用,即使它们也非常简单。
Shell脚本是一个很好的开始编写代码的地方,原因很明确:很容易在几行代码中组合一些东西,这将为您节省大量时间。让我们来看看几个食谱,或“模式”,你可以重新调整到自己的脚本。
首先,让我们从定义“shell脚本”开始,即编写要在bashshell中运行的脚本。从技术上讲,Powershell等其他脚本语言也可以被称为“shell脚本”,但为什么首先要关注shell脚本,特别是Bash脚本呢?
考虑到上面的内容,这里有一些有用的shell脚本的想法,您只需几行代码就可以将它们组合在一起。我们将构建几个脚本来增强Pandoc转换实用程序已经相当强大的功能。
使用shell脚本最简单、最直接的方法是作为现有命令的快捷方式。一些命令行程序有大量的标志,它们的语法并不总是清晰的。但是您可以使用这些命令中的一个,以及所有复杂的选项,并将它们放入一个具有更易于输入的名称的shell脚本中。考虑以下命令,该命令在标记文件上运行Pandoc,并使用模板文件创建ODT文件:
pandoc -r markdown -w odt --reference-odt=/path/to/folder/containing/mscript-template.odt -o manuscript.odt manuscript.md
我每天都使用Pandoc,因为我用Markdown和ascidoc等轻量级标记编写所有内容。然而,当转换到ODT时,我键入“ODT reference”而不是“reference ODT”。单身。时间。另外,模板的路径不会像大多数shell命令那样自动完成。创建一个简单的脚本可以避免所有的错误输入:
#! /bin/bash
pandoc -r docbook -w odt --reference-odt=/path/to/folder/containing/mscript-template.odt -o $1.odt $1
脚本的第一行指示系统使用bashshell来运行它。下一个在命令行中接受第一个参数($1),并运行带有一组标志的Pandoc。值得注意的是,还有其他方法可以做到这一点,例如在Unix系统上使用alias命令。但是**小型shell脚本意味着您可以将它们放在手边(例如在~/bin文件夹中),快速地将它们复制(或同步)到其他地方,并使用任何文本编辑器更改它们。使用易于记忆和键入的文件名保存脚本(例如“markdown2odt.sh公司"). 别忘了给它可执行权限。
用管道(“|”)字符连接两个终端命令会导致第一个命令的输出用作第二个命令的输入。(如果您以前从未见过这种情况,请查看我们的命令行快速指南。)但是,必须以正确的顺序键入两个命令,并使用正确的参数,只会使我们刚才讨论的问题更加复杂。将这个双重命令包装到shell脚本中,使其更加方便。
我使用Pandoc的一个技巧是“清除”HTML格式,或者删除所有内联样式。如果您曾经尝试过将字处理器文档导出为HTML,您会看到在文本中添加了大量样式(span标记)。
Docbook XML格式没有内联样式的约定,因此如果我们将HTML转换为Docbook,所有这些格式都会被丢弃。然后我们可以使用Pandoc将DocBook转换回HTML,然后我们得到一个很好的标记,您可以(例如)粘贴到WordPress中。下面的脚本将它们链接到一起,而不是单独调用Pandoc:
#! /bin/bash
pandoc -w docbook $1 | pandoc -r docbook -w html -o $1 -
上面利用了“标准输入”和“标准输出”的终端概念,如果您运行命令的第一部分,您将在终端中看到一大堆XML。原因是我们没有给Pandoc任何其他输出(比如一个文件)来使用。所以它使用的是唯一的后援:标准输出,在这里是终端。
另一方面,第二个Pandoc命令末尾的破折号意味着它应该使用“标准输入”。如果它自己运行,您将收到一个提示,shell将等待您通过它的默认输入,通过键盘输入一些文本。当我们将它们结合起来时,您几乎可以想象第一个命令将一堆XML输出到终端,然后立即通过管道输入第二个命令作为输入。
结果是,如果您将其重命名为“clean-html.sh文件,“您可以在任何HTML文件上运行它,以摆脱那些烦人的样式。最好的部分是Pandoc将从文件中读取,然后在最后覆盖它,这意味着没有散乱的临时文件。
有些程序允许您在命令行中指定通配符,如星号。例如,这允许您将所有JPG图像移动到“图片”文件夹:
mv *.jpg ~/Pictures
但其他程序一次只接受一个文件作为输入,Pandoc就是其中之一。那么,当我们有一个完整的目录,其中充满了导出的HTML文件,我们想清理HTML格式时会发生什么呢?我们需要进行“清洁”吗-html.sh文件“手动编写每个脚本?
不,因为我们不是新手。我们可以将管道命令包装为“for each”循环。这将依次转到当前目录中的每个HTML文件,并对其执行清除操作。我们还可以通过echo语句添加一条消息,让我们知道所有文件都已处理完毕:
for filename in ./*.html
do
pandoc -w docbook $1 | pandoc -r docbook -w html -o $1 -
echo "Working on $1... HTML is clean!"
done
现在,如果你有一个满是“脏”HTML的文件夹,你可以在上面运行这个脚本,最后得到一些非常干净的HTML格式。
如果你喜欢修修补补,你会喜欢shell脚本,因为总是有调整要做。关于如何使用这些模式作为其他脚本的基础的一些想法包括:
如您所见,使用shell脚本,您可以一次构建一点东西,在提示符处测试它们,并在运行时将它们固定到脚本上。
你怎么说,shell脚本现在看起来没有那么吓人了吗?你准备好尝试自动化你最枯燥的任务了吗?如果你决定加入,请在下面的评论中告诉我们!
...1977年,bourneshell紧随其后,至今仍作为root帐户的默认Shell使用。这个shell增加了脚本能力,这在多年的实践中证明是非常有用的。 ...
...arten Billemont编写,是一个开源的指南和练习集合,您可以使用它来掌握命令行。 ...
... 如果您是一个必须使用Windows系统的系统管理员,也可以使用代码在Mac上编写Powershell。开发人员可以找到支持几乎任何语言的插件。 ...
...个脚本,完全解决了他们的问题,他们可能仍然担心自己使用终端。在这种情况下,您不妨手动为它们执行所有操作。 ...
...序。它退出那些应用程序,然后安全地弹出驱动器。如果使用外部驱动器进行备份,此工具可以使备份过程更轻松。 ...
...工具,但他们也需要能够为WordPress定制内容,而不仅仅是使用。这可能包括插件、模块和主题。 ...
...动更正!让我们看看如何通过两种不同的方法在Windows10上使用自动更正。 ...
您可以在Linux上使用pandoc在40多种文件格式之间进行转换。您还可以使用它创建一个简单的文档作为代码系统,方法是使用Markdown编写文档,使用git存储文档,并以其支持的任何格式发布文档。 文档转换和文档作为代码 如果你...
...模拟。它包含将被模拟的硬件终端的类型。 用户:当前使用系统的用户的用户名。 PWD:当前工作目录的路径。 OLDPWD:移动到当前工作目录之前所处的目录。 LS\u颜色:LS使用的颜色代码列表突出显示不同的文件类型。 邮件:如...