首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使‘`enscript`’块,直到打印机完成其工作?

如何使‘`enscript`’块,直到打印机完成其工作?
EN

Unix & Linux用户
提问于 2018-09-20 20:29:16
回答 1查看 138关注 0票数 0

以下命令将在~/PDF/下创建一个pdf文件:

代码语言:javascript
复制
enscript -B -P PDF  bloom.c

我想把输出pdf文件移到这里

代码语言:javascript
复制
mv "`ls -dtr1 ~/PDF/* | tail -1`" .

但是,我无法运行mv命令,不能完全按照enscript命令运行,因为enscript将输入文件发送到打印机PDF,并在打印机完成创建pdf文件之前立即返回。

一个非常糟糕的解决方案是在这两个命令之间插入以下命令

代码语言:javascript
复制
sleep 5

这很糟糕,因为我不知道我要等多久。

请注意,我知道还有其他更好的方法来完成相同的任务,而不必在mv之后运行enscript命令,但是我只是想知道是否有任何方法在打印机完成任务之前使enscript块成为块呢?我记得除了enscript之外,我对其他命令也有类似的想法。我假设enscript没有提供这样的选项,所以会对bash或其他程序是否能实现这一点感兴趣。信号处理可能是一个解决方案,但我不知道要捕捉哪个信号。

EN

回答 1

Unix & Linux用户

发布于 2018-09-29 14:57:38

由于这个文件太大,无法放在注释中,所以您是否尝试过使用~/PDF (LiSt open )检查当它们开始卷曲时目录中的任何文件是否仍然是打开的?

enscript -B -P PDF bloom.c之后添加以下代码片段:

代码语言:javascript
复制
# Go into endless loop and break when all files in */PDF/* are closed.
while :
do
    if ! [[ `lsof | grep /PDF/` ]]
    then
        break
    fi
    sleep 1
done

而在

代码语言:javascript
复制
mv "`ls -dtr1 ~/PDF/* | tail -1`"

这样你只会损失1秒..。

欲了解更多信息:

  • lsof将列出所有当前打开的文件
  • 强制性的man lsof会给你更多的细节。

;-)

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/470390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档