Существует checkbashisms. На Debian это поставляется как часть инструментов специалиста по обслуживанию пакета.
Протестируйте свои сценарии под тире и шикарный. У обоих есть несколько конструкций неPOSIX, но если Ваш сценарий будет работать в обоих, то он, вероятно, будет работать в большинстве мест. (С протестом, что трудно протестировать типичные сценарии оболочки, поскольку они имеют тенденцию иметь много угловых случаев.)
Если Вы предназначаете, чтобы Ваши сценарии были портативными на встроенные платформы Linux, протестируйте их с BusyBox. Обратите внимание, что BusyBox может быть более или менее ограничен, в зависимости от того, как маленький встроенная система Вы хотите; довольно нормально иметь сценарии, которые полагаются на функцию, которую не имеют некоторые установки BusyBox.
Обратите внимание, что немобильность не прибывает из одной только оболочки, она также прибывает из внешних утилит. OpenBSD и Солярис склонны иметь утилиты с функциями POSIX и не намного больше, таким образом, они хороши для тестирования на мобильность.
Вы захотите обратиться к спецификации POSIX и другим ресурсам, упомянутым в этом потоке (особенно autoconf руководство); но это - документация, не помогает, используете ли Вы функцию случайно.
Почему нет tar
файлы, которые будут зашифрованы и затем шифруют tarball?
Я просто видел опцию --multifile
на странице справочника:
Это изменяет определенные другие команды, чтобы принять несколько файлов для обработки на командной строке или читать из STDIN с каждым именем файла на отдельной строке. Это позволяет, чтобы много файлов были обработаны сразу. - много ‐ файл может в настоящее время использоваться наряду с - проверяют, - шифруют, и - дешифруют. Обратите внимание, что - многофайловый - проверяют, может не использоваться с отдельными подписями.
То, что Вы конкретно ищете, --encrypt-files
и, снова страница справочника:
Идентичный - многофайловый - шифруют.
Эй, я прочитал комментарии к ответу, который был помечен как исключенный; похоже, вы должны быть осведомлены о магии|
(анонимных каналов )проверьте ответ, который я только что опубликовал на суперпользователь , и вы обнаружите, что tar
и gpg
могут быть объединены вместе, так что ваши выходные данные сжимаются и шифруются перед выводом. Обратите внимание, что он по-прежнему будет использовать значительные системные ресурсы, поэтому проверьте страницы man
для команды nice
, чтобы ограничить способность команд потреблять только определенный процент ресурсов. Кроме того, пока я в настроении предложить темы, которые могут облегчить вашу жизнь в командной строке в целом; просмотрите файловые дескрипторы и именованные каналы для передачи данных.
Если вы хотите увидеть, какую магию можно выполнить, когда вы понимаете вышеперечисленные темы, проверьте журналы сборки Travis -CI и соответствующие сценарии для решений, связанных с автоматизацией GnuPG по команде линия.
----Обновления
В соответствии с запросом пример работы с каталогами можно найти в ранее упомянутом скрипте в строке 680 , а более общий пример будет...
#!/usr/bin/env bash
dir_path="${1:?${0##*/} needs a directory path as the first argument}"
default_gpg_email="your-email@host.domain"
gpg_email="${2:-$default_gpg_email}"
_dir_name="${dir_path##*/}"
_dir_name="${_dir_name%/*}"
Var_star_date="$(date -u +%s)"
if [ -d "${dir_path}" ]; then
tar -cz - "${dir_path}" | gpg --always-trust --armor --batch --no-tty --encrypt --recipient ${gpg_email} > /tmp/${Var_star_date}_${_dir_name}.tgz.gpg"
else
echo "${0##*/} operates on directories"
exit 1
fi
... который может работать с script-name.sh /path/to/dir
или script-name.sh /path/to/dir new-email@host.domain
и должен выводить в каталог /tmp
файл<current-date>_<top-dir-name>.tgz.gpg
Поэтому я не знаю, как зашифровать весь каталог, но вот команда, которая зашифрует все файлы в каталоге, оканчивающемся на.csv.
найти. -имя " *.csv" -exec gpg --шифр -алгоритм AES256 --симметричный --парольная фраза -файл.парольная фраза --пакет --да {} ;