Chcete zlepšit tuto otázku? Přidejte podrobnosti a objasněte problém úpravou tohoto příspěvku.
Zavřeno před 4 lety.
Vylepšete tuto otázku
Jak mohu dekomprimovat a zrušit archivaci souboru .tar.gz pomocí cat, tar a gzip na jednom příkazovém řádku? Je to vůbec možné?
Přijatá odpověď:
Není potřeba cat
nebo gzip
:
$ tar xvzf archive.tar.gz
Řetězec volby říká tar
extrahovat (x
) v podrobném režimu (v
) komprimovaný (z
) archiv po f
vlajka.
Pomocí všech cat
, tar
a gzip
(což je hloupé, nedělejte to ):
$ cat archive.tar.gz | gzip -d -c | tar xvf -
nebo
$ gzip -d -c archive.tar.gz | cat | tar xvf -
Při zadání -
jako název souboru tar
přečte archiv ze standardního vstupu.
Poslední dva příklady trpí tím, čemu se běžně říká „Neužitečné použití cat
“, protože jediná věc je cat
dělá je zamíchat data do další části kanálu.
O něco lepší verze bez cat
:
$ gzip -c -d archive.tar.gz | tar xvf -
To může být skutečně užitečné vědět, jak to udělat na systému, kde je tar
neví, jak zacházet s komprimovanými archivy.
Archaický řetězec voleb, který jsem použil pro tar
výše, bez pomlčky (-
) před ním, pochází z doby před tím, než se pomlčka běžně používala pro zadávání voleb příkazového řádku. Mezi další nástroje, které nepoužívají běžnou syntaxi voleb, patří dd
a mt
, ale zatímco většina implementací tar
dnes rozumí novější možnosti pomlčky, dd
obvykle ne. mt
příkaz (který řídí operace s magnetickou páskou) získal některé možnosti pomlček (zejména na Linuxu), ale jedinou nepovinnou součástí příkazového řádku je stále příkaz, který chcete provést na jednotce, jako je rewind
nebo eof
.