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!
tar
nie wie, jaki typ danych ma na sobie, stdin
dopó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 stdin
potoku, 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.)