LibreOffice / OpenOffice, а также большинство других текстовых процессоров (Abiword) может сделать это довольно легко.
Существует немного названной утилиты unoconv
это использует кодовую базу LibreOffice, чтобы сделать преобразования формата файла на командной строке. Это может считать и записать любую комбинацию форматов, как которые LibreOffice может и делать очень легким сделать вещи doc
кому: pdf
преобразования на командной строке. Простой txt
кому: pdf
было бы легко для него.
Сообщение cannot execute binary file
не имеет никакого отношения к терминалам (Интересно, что привело Вас думать, что — и я рекомендую стараться не делать такие предположения в вопросе, поскольку они имеют тенденцию топить Вашу фактическую проблему в путанице отвлекающих маневров). На самом деле это - способ удара выразить ENOEXEC
(чаще всего выражаемый как exec format error
.
Во-первых, удостоверьтесь, что Вы случайно не пытались выполнить этот исполняемый файл как сценарий. Если Вы записали . ./executable
, это говорит удару выполняться ./executable
в той же среде как сценарий выполнения вызова (в противоположность отдельному процессу). Это не может быть сделано, если файл не является сценарием.
Иначе это сообщение означает это ./executable
не находится в формате, который распознает ядро. У меня нет определенного предположения относительно того, что происходит все же. Если можно запустить скрипт на той же самой машине путем вызова его по-другому, это не может только быть поврежденный файл или файл для неправильной архитектуры (могло бы случиться так, что, но существует больше к нему). Интересно, могло ли быть различие в способе, которым цель загружается (возможно, состояние состязания).
Вот список дополнительных данных, которые могут помочь:
file …/executable
на сервере B.uname -a
если это подобно Unix.cksum ./executable
или md5sum ./executable
или безотносительно метода Вы имеете на цели непосредственно перед тем, как yet-another-bash-script вызывает ./executable
. Проверьте, что результатами является то же в Гудзонском вызове в Вашем успешном ручном вызове и на сервере B.set -x
наверху yet-another-bash-script (чуть ниже #!/bin/bash
строка). Это произведет трассировку всего, что сценарий делает. Сравните трассировки и сообщите о любом различии или причуде../executable
не становится загруженным (или еще не загружается) в Гудзонских вызовах. Вы могли бы хотеть использовать set -x
в других сценариях, чтобы помочь Вам там и осмотреть журналы начальной загрузки от цели.Это может произойти при пропавших без вести строки хижины наверху сценария. Удостоверьтесь, что сценарий запускается с:
#!/bin/bash
Это только собралось для меня, когда я запустил скрипт с sudo -u <user>