在 ubuntu-16.04 中,命令行程序 pdftk 被删除了。我每天都使用 pdftk,所以我正在研究使用这个 PDFTK forkhttps://gitlab.com/marcvinyals/pdftk根据以下说明https://askubuntu.com/questions/1028522/how-can-i-install-pdftk-in-ubuntu-18-04-bioni
#!/bin/bash
java -jar pdftk.jar
现在,我已经使用上面的代码构建了名为 pdftk 的 bash 脚本,并将其放入/usr/local/bin/
并使其可执行
sudo chmod +x /usr/local/bin/pdftk
我已将该pdftk.jar
文件复制到/usr/local/bin/
并使用相同的命令使其可执行。
现在没有像我希望的那样工作:
me@mine:~/M$ sudo ls -l /usr/local/bin/pdftk
---xr-xr-x 1 root root 32 May 3 13:38 /usr/local/bin/pdftk
me@mine:~/M$ sudo ls -l /usr/local/bin/pdftk.jar
-rwxr-xr-x 1 root root 742367 May 2 16:32 /usr/local/bin/pdftk.jar
当我尝试让它在任何目录中工作时它失败了。
me@mine:~/M$ pdftk *.pdf output john.pdf
Error: Unable to access jarfile pdftk.jar
我做错了什么?
答案1
如果pdftk.jar
和您的pdftk
shell 脚本并存,则/usr/local/bin
只需传递 JAR 文件的实际路径即可。您可以在 shell 脚本中按如下方式执行此操作:
#!/usr/bin/env bash
java -jar /usr/local/bin/pdftk.jar "$@"
或者,我认为更强大的解决方案:
#!/usr/bin/env bash
java -jar "$0.jar" "$@"
后者使用 shell 脚本的名称并附加后缀.jar
。这实际上就是它所做的一切。因此,只要它们都位于同一目录中,这应该可以工作。即使您同时移动它们。而第一个解决方案需要您调整 shell 脚本以使用 JAR 文件的新路径。
我也喜欢用双引号,因为如果你决定将这两个文件复制到其中有空白的路径中,脚本就会中断。
我还改变了 hashbang,因为它更具可移植性(跨各种 Linux 和 BSD 版本)。