有没有办法扩展 xdg-open?

有没有办法扩展 xdg-open?

我希望标题没有误导。

我正在使用一个笔记应用程序,它可以让我从 Markdown 笔记中打开文件:

[read more](/path/to/file.pdf)

我找不到在特定页面上打开它的方法。我无法以 PDF 阅读器接受的格式创建链接。

有没有好的方法可以用脚本打开文件?基本上我每次都想用#page=5替换。-p 5

我想我可以编写自己的包装脚本,这样我就可以输入:

[read more](/path/to/file.pdf#page=5)

我的脚本解析路径并将其转换为

 xdg-open /path/to/file.pdf -p 5

答案1

我不确定下面的方法有多优雅。但它对我来说很正常。

我在用着重新文本作为 Markdown 编辑器并计划使用

[link-to-pdf](pdf-filename.pdf#page=2)

带页码的 PDF 的语法。

因此我定义了本地xdg-open包装器脚本:

mkdir /home/$USER/bin
echo "export PATH=/home/$USER/bin:$PATH" >> .bashrc

并将以下代码放入/home/$USER/bin/xdg-open

#!/bin/sh

pdfviewer=atril
filename="$1";

case $filename in
    *.pdf#page=*) 
            file=$(echo "$filename" | cut -d "#" -f 1);
            page=$(echo "$filename" | cut -d "#" -f 2 | sed "s/page=/-p /");
            $pdfviewer "$file" $page ;;
    *)      /usr/bin/xdg-open "$@" ;;
esac

此脚本应为可执行脚本(用 设置chmod +x /home/$USER/bin/xdg-open),并且仅当 被找到时才会使用.pdf#page=,否则将使用系统范围的/usb/bin/xdg-open

我已经在我的 Ubuntu 16.04 LTS MATE 上使用 Atril PDF 查看器测试了此方法。
您可以根据需要更改pdfviewer变量。evince

作为免费奖励,我们可以.pdf#page=在终端中使用语法:

xdg-open /usr/share/doc/qpdf/qpdf-manual.pdf#page=12

注意:经过这样的操作后,我们有两个xdg-open可执行文件——的输出whereis xdg-open应该变成xdg-open: /usr/bin/xdg-open /home/user/bin/xdg-open /usr/share/man/man1/xdg-open.1.gz

相关内容