3

ZIP-архивы, созданные в системах Mac OS X, обычно включают каталог __MACOSX который бесполезен, раздражает и нежелателен практически во всех других ОС.

Для распаковки ZIP-архивов я использую Info-ZIP, который, я думаю, является распаковкой по умолчанию в большинстве дистрибутивов Linux. Как лучше всего unzip Info-ZIP всегда и автоматически подавить извлечение любого __MACOSX который может присутствовать?

Согласно man-странице unzip , опция -x может использоваться для исключения каталогов из обработки, и действительно добавление -x __MACOSX/* в конец моей командной строки unzip делает свое дело. Но я не хочу постоянно это печатать. Страница man также говорит, что параметры командной строки можно прочитать из переменной среды UNZIP , но, очевидно, это работает только для тех параметров, которые идут перед именем архива (тогда как -x должен идти после него):

$ export UNZIP="-x __MACOSX/*"
$ unzip foo.zip
unzip:  cannot find or open __MACOSX, __MACOSX.zip or __MACOSX.ZIP.

Есть ли лучшее решение, чем упаковка unzip в сценарий оболочки, который автоматически добавляет -x __MACOSX/* в конец командной строки?

1 ответ1

5

Используйте функцию оболочки:

myunzip() {
    unzip "@$" -x '__MACOSX/*'
}

myunzip foo.zip

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