使用简单的shell脚本修复html格式

如果在编辑器中编写HTML并粘贴到WordPress中,通常会添加恼人的HTML格式。使用简单的shell脚本,您可以清除这些内容。...

如果您经常在编辑器中编写HTML,然后粘贴到WordPress中,您会注意到有时会添加恼人的格式标记(如标记)。使用简单的shell脚本,您可以通过几个简单的命令自动清除那些垃圾HTML格式。

fix-html-shell-scripting

为什么使用shell脚本?如果你是编程新手,从小事做起会更好。不仅你不太可能放弃,而且你还有机会停下来学习。也就是说,你的第一个程序可以非常有用,即使它们也非常简单。

Shell脚本是一个很好的开始编写代码的地方,原因很明确:很容易在几行代码中组合一些东西,这将为您节省大量时间。让我们来看看几个食谱,或“模式”,你可以重新调整到自己的脚本。

为什么要编写shell脚本?

首先,让我们从定义“shell脚本”开始,即编写要在bashshell中运行的脚本。从技术上讲,Powershell等其他脚本语言也可以被称为“shell脚本”,但为什么首先要关注shell脚本,特别是Bash脚本呢?

  • 随着Linux的Windows子系统的引入,bashshell现在可以兼容所有主要的PC平台。(它也包括在macOS和几乎所有的Linux发行版中),甚至可以在Android**上使用Termux,这是googleplay提供的免费开源下载。
  • Shell脚本使您能够专注于编程基础知识,因为最重要的工作是通过包含的命令来完成的。假设您想在用C编写的传统桌面应用程序中压缩一些文件,您要么需要编写一点代码来使用兼容的软件库来完成这项工作,要么从头开始编写大量代码来真正完成压缩。在shell脚本中,只需对所需的文件运行tar命令。
  • 你可以用互动的方式,一小步一小步地发展。为了继续上面的例子,假设您已经决定使用tar来进行压缩,但是您还不确定您想要哪个选项。只需在提示符处使用它,直到得到所需的结果,然后将使用的命令复制/粘贴到脚本中。

考虑到上面的内容,这里有一些有用的shell脚本的想法,您只需几行代码就可以将它们组合在一起。我们将构建几个脚本来增强Pandoc转换实用程序已经相当强大的功能。

1收集参数的长列表

使用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公司"). 别忘了给它可执行权限。

2管道输出以清除html格式

用管道(“|”)字符连接两个终端命令会导致第一个命令的输出用作第二个命令的输入。(如果您以前从未见过这种情况,请查看我们的命令行快速指南。)但是,必须以正确的顺序键入两个命令,并使用正确的参数,只会使我们刚才讨论的问题更加复杂。将这个双重命令包装到shell脚本中,使其更加方便。

我使用Pandoc的一个技巧是“清除”HTML格式,或者删除所有内联样式。如果您曾经尝试过将字处理器文档导出为HTML,您会看到在文本中添加了大量样式(span标记)。

messy html formatting

Docbook XML格式没有内联样式的约定,因此如果我们将HTML转换为Docbook,所有这些格式都会被丢弃。然后我们可以使用Pandoc将DocBook转换回HTML,然后我们得到一个很好的标记,您可以(例如)粘贴到WordPress中。下面的脚本将它们链接到一起,而不是单独调用Pandoc:

  1. 将导出的HTML文件转换为DocBook,它没有内联样式(在管道之前)
  2. 将DocBook转换回现在漂亮、干净的HTML格式(在管道之后)
#! /bin/bash
pandoc -w docbook $1 | pandoc -r docbook -w html -o $1 -
clean html formatting

解释标准输入/输出

上面利用了“标准输入”和“标准输出”的终端概念,如果您运行命令的第一部分,您将在终端中看到一大堆XML。原因是我们没有给Pandoc任何其他输出(比如一个文件)来使用。所以它使用的是唯一的后援:标准输出,在这里是终端。

另一方面,第二个Pandoc命令末尾的破折号意味着它应该使用“标准输入”。如果它自己运行,您将收到一个提示,shell将等待您通过它的默认输入,通过键盘输入一些文本。当我们将它们结合起来时,您几乎可以想象第一个命令将一堆XML输出到终端,然后立即通过管道输入第二个命令作为输入。

结果是,如果您将其重命名为“clean-html.sh文件,“您可以在任何HTML文件上运行它,以摆脱那些烦人的样式。最好的部分是Pandoc将从文件中读取,然后在最后覆盖它,这意味着没有散乱的临时文件。

三。在多个html文件上运行程序

有些程序允许您在命令行中指定通配符,如星号。例如,这允许您将所有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格式。

clean multiple html files

从这里到哪里去

如果你喜欢修修补补,你会喜欢shell脚本,因为总是有调整要做。关于如何使用这些模式作为其他脚本的基础的一些想法包括:

  • 添加对直接从字处理器文件转换的支持,因为Pandoc支持ODT和DOCX输入(即链变成ODT/DOCX>DocBook XML>HTML)。
  • 将两个HTML清理器合并为一个,这样,如果提供了一个文件,它将清理该文件,否则它将自动清理当前目录中的所有内容(添加了处理命令行参数的功能)。
  • 为用户提供额外的导出选项,如PDF(通过if-then或case语句根据输入添加选项)。

如您所见,使用shell脚本,您可以一次构建一点东西,在提示符处测试它们,并在运行时将它们固定到脚本上。

你怎么说,shell脚本现在看起来没有那么吓人了吗?你准备好尝试自动化你最枯燥的任务了吗?如果你决定加入,请在下面的评论中告诉我们!

  • 发表于 2021-03-13 00:12
  • 阅读 ( 241 )
  • 分类:编程

你可能感兴趣的文章

什么是shell脚本,为什么要使用它

...1977年,bourneshell紧随其后,至今仍作为root帐户的默认Shell使用。这个shell增加了脚本能力,这在多年的实践中证明是非常有用的。 ...

  • 发布于 2021-03-13 04:53
  • 阅读 ( 251 )

顶级网站和书籍,让您成为linux命令行英雄

...arten Billemont编写,是一个开源的指南和练习集合,您可以使用它来掌握命令行。 ...

  • 发布于 2021-03-14 07:04
  • 阅读 ( 249 )

VisualStudio代码是mac的完美文本和脚本编辑器

... 如果您是一个必须使用Windows系统的系统管理员,也可以使用代码在Mac上编写Powershell。开发人员可以找到支持几乎任何语言的插件。 ...

  • 发布于 2021-03-14 07:11
  • 阅读 ( 205 )

在linux中如何方便地在文档格式之间转换

... 基本pandoc安装和使用 ...

  • 发布于 2021-03-14 18:46
  • 阅读 ( 286 )

如何使用applescript将bash脚本转换为可单击的应用程序

...个脚本,完全解决了他们的问题,他们可能仍然担心自己使用终端。在这种情况下,您不妨手动为它们执行所有操作。 ...

  • 发布于 2021-03-21 09:39
  • 阅读 ( 249 )

增强finder功能的8款最佳mac应用程序

...序。它退出那些应用程序,然后安全地弹出驱动器。如果使用外部驱动器进行备份,此工具可以使备份过程更轻松。 ...

  • 发布于 2021-03-22 12:00
  • 阅读 ( 518 )

什么是wordpress开发者?5种必备技能

...工具,但他们也需要能够为WordPress定制内容,而不仅仅是使用。这可能包括插件、模块和主题。 ...

  • 发布于 2021-03-26 19:49
  • 阅读 ( 470 )

如何在Windows10中启用内置的自动更正

...动更正!让我们看看如何通过两种不同的方法在Windows10上使用自动更正。 ...

  • 发布于 2021-03-30 18:14
  • 阅读 ( 261 )

如何使用pandoc在linux命令行上转换文件

您可以在Linux上使用pandoc在40多种文件格式之间进行转换。您还可以使用它创建一个简单的文档作为代码系统,方法是使用Markdown编写文档,使用git存储文档,并以其支持的任何格式发布文档。 文档转换和文档作为代码 如果你...

  • 发布于 2021-04-02 00:59
  • 阅读 ( 236 )

如何在linux上的bash中设置环境变量

...模拟。它包含将被模拟的硬件终端的类型。 用户:当前使用系统的用户的用户名。 PWD:当前工作目录的路径。 OLDPWD:移动到当前工作目录之前所处的目录。 LS\u颜色:LS使用的颜色代码列表突出显示不同的文件类型。 邮件:如...

  • 发布于 2021-04-02 06:44
  • 阅读 ( 224 )
筱诗馨雯
筱诗馨雯

0 篇文章

相关推荐