command-line - 如何在命令行中将字符串添加到标准输入?
问题描述
这可能是非常基本的,但我正在努力使用命令行。假设我想将 markdown 文件 myDoc.md 转换为 pdf 文件。Markedjs提供了一个命令行工具,可以将markdown转为html,而wkhtmltopdf可以将html转为pdf,所以我有命令
marked myDoc.md | wkhtmltopdf - myDoc.pdf
那行得通,它会生成pdf。但是 pdf 非常难看,我想在将它传递给 wkhtmltopdf 之前在 html 中添加一个样式部分。是的,我可以将样式部分放在降价文档中,但我不想用这个污染标记。我想使用标记来生成 html,然后添加一个样式部分,然后将其提供给 wkhtmltopdf,而无需清理任何中间文件。像这样的伪代码
myStyle="<style>
*{
font-family: arial;
}
h1{
text-align:center;
}
</style>"
marked myDoc.md | concatenatestrings myStyle - | wkhtmltopdf - myDoc.pdf
但是我遇到麻烦的地方是我不知道如何处理多行字符串myStyle
并找到可以执行假设concatenatestrings
命令的操作,从标准输入获取字符串,添加 myStyle,然后输出到标准输出。
解决方案
我会使用模板文件,然后使用子外壳将模板和输出输出marked myDoc.md
到标准输出,然后将结果通过管道传输到链的其余部分。
所以,让我们创建模板文件...
template.html
<style>
*{
font-family: arial;
}
h1{
text-align:center;
}
</style>
...并使用它
$ (cat template.html && marked myDoc.md) | wkhtmltopdf - myDoc.pdf
我没有用你的命令测试过这个(我不想安装marked
只是为了测试它),但是用下面的命令测试了它......
$ (echo ree && echo cola) | cat
ree
cola
推荐阅读
- python - Flask API 无法从 PHP 接收数据
- sql - 合并没有视图的子查询
- php - PHP将字符串转换为变量不起作用
- c - 在 Mac OS Catalina 10.15.2 上安装 Library X11
- f# - 具有多个函数的递归 F#
- windows - 来自 docker-compose 的环境变量未传递给容器
- python - 如何在 add_widget() 中引用 id
- kubernetes - 在 kubernetes spec.template.spec.containers[1].image 上创建 Deployment YAML 时出错:必需值
- javascript - 从 Launchpad-Tile 更改颜色
- docker - Docker 卷无法与 Docker-compose 一起生成 Doxygen 文档