Другой случай помимо многих, упомянутых здесь для того, чтобы иметь пользовательские скомпилированные ядра, настраивает специализированные среды сетевой загрузки, где загрузка модуля не выполнима, и необходимо раздать полностью рабочие ядра к определенным машинам для определенных задач.
Это возможно, синтаксис довольно легок:
$ cat *.tar | tar -xvf - -i
-i опция игнорирует EOF в конце архивов tar из страницы справочника:
-i, --ignore-zeros
ignore blocks of zeros in archive (normally mean EOF)
Необходимо использовать цикл. Это не повредилось бы tar
синтаксис командной строки, чтобы позволить нескольким -f
опции, но это потребовало бы, чтобы добавляющий код обработал несколько архивов в последовательности со всеми видами граничных условий (Что происходит, если архив в середине уродлив? Архивы могут использовать различные механизмы сжатия? У Вас могут быть несколько -C
опции (опция tar GNU извлечь к конкретному каталогу), также? Что относительно-K (опция tar GNU запуститься в определенном имени элемента)? …).
Одна возможность, избегающая a for
цикл должен установить и активировать AVFS, файловая система FUSE, которая обеспечивает прозрачный доступ к архивам. Каждый архив /path/to/archive
удваивается как каталог ~/.avfs/path/to/archive#
. Если Вы хотите соответствовать архивам подстановочным знакам, существует препятствие добавления этого #
к подстановочному соответствию; это может быть сделано в zsh.
mountavfs
cp -p ~/.avfs$PWD/{a,b}.tgz\#/* /destination
cp -p ~/.avfs/path/to/source/*.tgz(e\''REPLY=$REPLY\#'\')/* /destination
for file in *.tar.gz; do tar -zxf "$file"; done
for file in *.tar.bz2; do tar -jxf "$file"; done
for file in *.tar.xz; do tar -Jxf "$file"; done
cat *.tar.bz2 | tar -ixjv
.Спасибо! – scy 01.09.2011, 12:40