通过键入 PDF 文件的名称来打开该文件

通过键入 PDF 文件的名称来打开该文件

我使用的是 Mac OS X,通常从终端打开 PDF 文件(使用 bash)

open myfile.pdf

现在我只能打字

myfile.pdf

并使用上面的命令打开它。是否有机会配置 bash 来为我运行该命令?如果这仅适用于 PDF 文件,我会很高兴,但当然欢迎更通用的解决方案。

其实它并不纯粹是为了节省一些击键次数。如果一个解决方案需要我两个小时,我怀疑在接下来的几年里我会通过减少两次按键来节省这么多时间。我想了解这是否可能以及如何实现。

答案1

有一种方法可以将这个功能添加到bash.

当您尝试“运行”文件时,bash 将发出command not found错误:

$ 1.pdf
bash: 1.pdf: command not found

之后它也会发出ERR“信号”。使用内置功能,trap您可以捕获这种类型的信号并定义处理错误的函数。

那一页您可以找到将处理该错误的脚本(另请参阅解释)。

脚本有很好的注释,因此根据您的需要修改它应该不成问题。

抓到后ERR它检查最后一个命令的错误代码。如果是错误的话2、126 或 127它将继续。在下一步中,它将检查最后一个命令并将其拆分为命令部分和参数。

首先if..fi“处理可能涉及忘记前导斜杠的错误”,这样您就可以将其删除。

在下一条语句开始时,if会检查您的命令是否是目录,因此也可以将其删除。更有趣的是第二部分if- 脚本检查文件类型并打印一些如何打开该类型文件的建议。相反,您可以只输入类似open $cmd或的内容APPLICATION_TO_OPEN_PDF $cmd(当然您需要添加检查文件是否为 PDF)。

安全说明:如果您想使用该功能,您应该使用APPLICATION_TO_OPEN_PDF $cmd而不是open $cmd.您还应该为特定文件类型设置操作,而不是对所有类型的文件使用 open 或 exec 以避免运行某些恶意脚本或类似的东西。


还有另一种方法可以做到这一点,但我认为这可能会导致一些问题,因为它更具侵入性。

您可以重新定义函数command_not_found_handle()并将检查和opens 放在那里。这将导致不会出现错误消息,但我不确定在您不想处理的情况下它将如何处理错误代码和消息。

答案2

在 zsh 中,定义一个后缀别名在你的.zshrc

alias -s pdf=open

zsh 一般比 bash 具有更好的交互功能和更好的编程功能。至少从 10.4 版本开始,它就随 Mac OS X 一起提供。

答案3

open我想你可以为名称创建一个别名o,然后输入

 o myfile.pdf

虽然我不知道这是否可以节省您打字的时间open:-) 在任何情况下都必须指定文件名。

所以对于别名:

alias o="open"

应该进入你的~/.bashrc file

相关内容