sh脚本和bash脚本

我们家里有一台激光打印机。 惠普(Hewlett Packard)LaserJet Pro CP1525nw彩色打印机是一种较旧的型号,但它是一台出色的打印机,可以可靠地进行彩色打印。 几年前,我使用Raspberry Pi作为打印服务器将其放置在我们的家庭网络中 。

去年我成立了我的公司 ,我依靠这台小型激光打印机为客户会议,研讨会和培训课程打印讲义和其他材料。

我对这台打印机唯一的抱怨是它只能打印单面。 如果要双面打印,则需要设置一个自定义打印作业以自己完成。 这很不方便,需要手动操作。 在LibreOffice中,我需要专门设置打印作业,以首先打印奇数页,然后在相反面以相反顺序打印偶数页之前重新装入纸张。

如果我需要打印某人发送给我的PDF,则过程相同。 对于四页文档,我首先需要打印页面1和3,然后重新装入纸张并以相反的顺序打印页面2和4。 在GNOME打印对话框中,您需要选择“页面设置”以打印奇数页或偶数页。

无论我如何打印,整个过程都是打印奇数页,将一叠打印页重新装入纸盒,然后以相反顺序打印偶数页。 如果我要打印四页的文档,则以相反的顺序打印偶数页意味着第4页打印在第3页的背面,而第2页打印在第1页的背面。想象一下,当我在这少数情况下感到沮丧忘记打印偶数页并破坏了较长的打印作业时,选择了以相反顺序打印的选项。

同样,很容易忘记如何处理页数奇数的文档。 在一个五页的文档中,您首先要打印第1、3和5页。但是,当您将打印的页面重新加载到打印机中时,就不需要第5页。相反,您只想加载第1和3页。 ,则第4页将打印在第5页的背面,第2页将打印在第3页的背面,而第1页的背面则没有打印任何内容。

为了使事情变得更简单,更可靠,我编写了一个简单的Bash脚本,该脚本可以自动打印双面文件。 这基本上是一个包装器,用于打印奇数页,提醒我重新加载页面(并在需要时删除最后一页),然后打印偶数页。

每当我需要将文档打印为双面文档时,我都会先将文档转换为PDF。 这很容易做到。 在LibreOffice中,有一个工具栏图标可以直接导出为PDF。 您也可以在“ 文件”“导出为”“导出为PDF”下进行导航。 或在任何其他应用程序中,通常都有“ 保存为PDF”功能。 如有疑问,GNOME支持打印到PDF文件而不是打印机。

这个怎么运作

保存为PDF后,让我的Bash脚本完成其余的工作。 这实际上只是使lpr命令自动化,使打印更容易。 它首先打印奇数页,提示我重新装入纸张,然后打印偶数页。 如果文档的页面数奇数,它还会提醒我在重新加载打印的页面时删除最后一页。 很简单

脚本的唯一“编程”部分是确定页数,并确定这是偶数还是奇数。 两者都很容易做到。

要确定页数,我使用pdfinfo命令。 这会生成有关PDF文档的有用信息。 这是一些示例输出:

$ pdfinfo All\ training\ -\ catalog.pdf
Creator:        Writer
Producer:       LibreOffice 6.3
CreationDate:   Fri Oct 18 16:06:07 2019 CDT
Tagged:         no
UserProperties: no
Suspects:       no
Form:           none
JavaScript:     no
Pages:          11
Encrypted:      no
Page size:      612 x 792 pts (letter)
Page rot:       0
File size:      65623 bytes
Optimized:      no
PDF version:    1.5

该输出非常容易解析。 为了获得页数,我使用AWK单行脚本查找Pages:并打印第二个字段。

 pages=$( pdfinfo "$1" | awk '/^Pages:/ {print $2}' ) 

为了弄清楚这是一个奇数还是偶数,我使用模( )算术运算符除以二并告诉我余数。 对于偶数,两个模的模数始终为零,对于奇数,模的模数始终为零。 我使用这个简单的测试来确定文档中的页面数是否为奇数,因此在打印文档的其余部分之前,需要删除最后一页:

 if [ $(( $pages % 2 )) -ne 0 ] ; then 

这样,编写print-duplex.sh Bash脚本很简单, 只需使用正确的选项调用lpr即可将输出发送到我的打印机( lpr -P“ HP_LaserJet_CP1525nw” ),以打印奇数页( -o page-set) =奇数 )或偶数页( -o page-set = even ),并以相反的顺序打印( -o outputorder = reverse )。

Bash脚本

#!/bin/sh
# print-duplex.sh
# simple wrapper to print duplex

cat<<EOF
$1 ($pages pages)
-------------------------------------------------------------------------------
Printing odd pages first
Please wait for job to finish printing...
-------------------------------------------------------------------------------
EOF

lpr -P "HP_LaserJet_CP1525nw" -o page-set=odd "$1"
sleep $pages

cat<<EOF
===============================================================================
Put paper back into the printer in EXACT OUTPUT ORDER (face down in tray)
then press ENTER
===============================================================================
EOF

pages=$( pdfinfo "$1" | awk '/^Pages:/ {print $2}' )

if [ $(( $pages % 2 )) -ne 0 ] ; then
echo '!! Remove the last page - this document has an odd number of pages'
fi

echo -n '>'
read x

cat<<EOF
-------------------------------------------------------------------------------
Printing even pages
Please wait for job to finish printing...
-------------------------------------------------------------------------------
EOF

lpr -P "HP_LaserJet_CP1525nw" -o page-set=even -o outputorder=reverse "$1"


翻译自: https://opensource.com/article/20/4/print-duplex-bash-script

sh脚本和bash脚本

sh脚本和bash脚本_使用此简单的Bash脚本在家打印双面文档相关推荐

  1. vbsedit无法创建空文档_如何用Python快速优雅的批量修改Word文档样式?

    一.前言 大家好,又到了办公自动化系列! 之前讲过很多基于Excel的数据及样式调整案例,今天分享一个Python操作Word的真实自动化需求实现过程: 「使用Python批量修改Word样式」 主要 ...

  2. java jar 打印_三种Java打印PDF文档的实例代码

    以下内容归纳了通过Java程序打印PDF文档时的3种情形.即: 1 静默打印 2 显示打印对话框打印 3 打印PDF时自定义纸张大小 使用工具:Spire.PDF for Java Jar文件获取及导 ...

  3. python修改word字体颜色_如何用Python快速优雅的批量修改Word文档样式?

    作者:陈熹 来源:早起Python 大家好,又到了办公自动化系列!之前讲过很多基于Excel的数据及样式调整案例,今天分享一个Python操作Word的真实自动化需求实现过程: 「使用Python批量 ...

  4. python 打印文件_在Python中打印word文档

    我这里有一个简单的批处理文件,它将从命令行打印word文档. "C:\Program Files\Microsoft Office\Office12\winword.exe" &q ...

  5. python list转字符串_我用python写了个自动生成给文档生成索引的脚本!懒人智慧...

    我用 python 写了一个自动生成索引的脚本 简介:为了刷算法题,建了一个 GitHub仓库: PiperLiu / ACMOI_Journey ,记录自己的刷题轨迹,并总结一下方法.心得.想到一个 ...

  6. php超链接_一个纯PHP库,用于读写文字处理文档

    PHPWord是一个用纯PHP编写的库,它提供了一组用于读写不同文档文件格式的类.当前版本的PHPWord支持Microsoft Office Open XML(OOXML或OpenXML),用于Of ...

  7. rtf富文本_轻松生成动态RTF(富文本格式)文档

    rtf富文本 In this tutorial I will show you how to provide a dynamic RTF document on your website genera ...

  8. mysql脚本文件长什么样_在linux下执行mysql脚本文件,内容是创建一个FUNCTION,总是报错,请帮看下原因是什么?多谢...

    linux下装的是mysql客户端,server是另一台服务器,做如下操作,总是报错,请大家帮看看什么原因?多谢 (关键是这个脚本本人用navicat工具执行就没有问题,说明脚本身没有语法问题.) r ...

  9. python 基因序列提取_科学网—简单的Python脚本提取对应位置基因序列(fasta文件) - 王彬忠的博文...

    最近,用Python脚本提取,在基因号已知,位置已知条件下,相对应位置的基因序列时发现,这样很简单但是很实用的脚本,在网上却比较难找.而且,能被找到的脚本,相对于具有初级编程能力的人而言,有点难.本人 ...

最新文章

  1. jupyter notebook 内核好像挂掉了
  2. java postdelayed_你真的懂Handler.postDelayed()的原理吗?
  3. 【 MATLAB 】MATLAB 实现模拟信号采样后的重建(三)一阶保持(FOH)内插
  4. springside地址
  5. Delphi 105错误
  6. Python基础概念_13_常见关键字
  7. Java黑皮书课后题第1章:1.4(打印表格)编写程序,显示以下表格
  8. led投影仪能换大功率灯吗_LED大功率洗墙灯怎么防水
  9. Java中实现连接数据库并进行查询
  10. 华为明日发布鸿蒙整体战略;京东宣告全面向技术转型;Kotlin 1.3.60 发布 | 极客头条...
  11. 实例分割小工具labelme转coco
  12. 中国的 GitHub 要来了?
  13. NLPIR java测试(没找到范例代码)
  14. 读Zepto源码之集合操作
  15. endnote中CWYW无文件_学者原创:Endnote快速入门及常见使用问题
  16. vue中使用leaflet加载open street map的一些使用
  17. 域权限维持——黄金票据和白金票据
  18. oracle中的递归查询
  19. 安卓病毒频发,做好手机安全防护很有必要
  20. rainbow和论坛的集成

热门文章

  1. 基于java的记事本写字板的设计(JAVA CS窗体版)
  2. 浏览器中唤起Native App
  3. LintCode 题解 |Google 面试题:Take Coins
  4. react中使用echarts的bmap
  5. R语言 解决Error in install.packages : package ‘RGtk2’ not installed because it is not built for UCRT
  6. 树莓派配置局域网打印服务器(HP1018)
  7. 网页设计之JavaScript
  8. 题: 计算机网络常见故障 网络收集的
  9. FAST-LIO: A Fast, Robust LiDAR-inertial Odometry Package by Tightly-Coupled Iterated Kalman Filter
  10. 联发科4G安卓工控触摸主板