Używam GNU tar. Może automatycznie wykryć typ kompresji podczas kompresji / dekompresji plików. Ale muszę zdekompresować archiwum ze standardowego wejścia i typ kompresji jest nieznany. Zauważyłem, że smoła może dać mi prawidłowe sugestie, takie jak:
tar: Archive is compressed. Use -z option
Chcę jednak, aby tar automatycznie używał tej opcji kompresji bez pytania mnie o podanie tego argumentu. Jak mogę to zrobić? Dlaczego nie tar po prostu rozpakować, ponieważ już zna typ kompresji?
Dziękuję Ci!
tarnie wie, jaki typ danych ma na sobie, stdindopóki nie przeczyta, a do tego czasu jest już za późno na wywołanie programu dekompresującego. Obsługuje gzip, bzip2 i inne. Obejście tego problemu nie jest łatwe (musiałoby buforować dane), więc po prostu każe ci spróbować ponownie.
fork()/ exec()metodę rury dane przez rozpakować użyteczności. Narzędzie będzie czytać z stdinpotoku, a teraz będzie brakowało pierwszego 4K. Po odczytaniu danych nie ma możliwości ponownego umieszczenia danych w potoku.
cat buffer - | gunzip. (Alternatywnie, można użyć nieblokujących wejść / wyjść, aby uniknąć konieczności dodatkowego procesu.)