3

В Ubuntu-16.04 программа командной строки pdftk была удалена. Я использую pdftk каждый день, поэтому я работаю над этим PDFTK-форком https://gitlab.com/marcvinyals/pdftk, следуя инструкциям на https://askubuntu.com/questions/1028522/how-can-i-install -pdftk-в-убунту-18-04-bioni

#!/bin/bash
java -jar pdftk.jar

Теперь я собрал bash-скрипт с именем pdftk с кодом выше, поместил его в /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 ответ1

2

Если pdftk.jar и ваш сценарий оболочки pdftk рядом друг с другом внутри /usr/local/bin все, что нужно, - это передать фактический путь к файлу JAR. Вы можете сделать это в сценарии оболочки следующим образом:

#!/usr/bin/env bash
java -jar /usr/local/bin/pdftk.jar "$@"

или, на мой взгляд, более надежное решение:

#!/usr/bin/env bash
java -jar "$0.jar" "$@"

Последний использует имя сценария оболочки и добавляет суффикс .jar . Это все, что на самом деле делает. Так что, пока они оба живут в одном каталоге, это должно работать. Даже если вы перемещаете их в тандеме. В то время как первое решение потребует, чтобы вы настроили сценарий оболочки, чтобы использовать новый путь к файлу JAR.

Я предпочитаю также ставить двойные кавычки, потому что если вы когда-нибудь решите скопировать два файла в путь с пустым пространством, сценарий будет разбит.

Я также изменил hashbang, так как он более переносим (для разных версий Linux и BSD).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .