K dispozici je mnoho aplikací pro extrahování různých typů archivních souborů. Pamatovat si všechny možnosti a parametry každého archivačního nástroje by pro vás bylo obtížné. Bez obav! Dnes jsem narazil na jednoduchou funkci Bash pro extrahování archivů souborů různých typů v Linuxu.
Tato funkce Bash dokáže extrahovat většinu běžně používaných archivních formátů, jako je .tar.bz2
, .tar.bz
, .bz2
, .rar
, .zip
a .7z
atd. K rozbalení archivního souboru nemusíte používat vlastní archivační aplikaci! Stačí přidat tuto funkci do vašeho souboru ~/.bashrc a zavolat ji pro rozbalení archivních souborů. Automaticky najde a použije vhodný archivační nástroj k extrahování souborů. Není třeba si pamatovat příznaky a možnosti!
Funkce Bash pro extrahování archivů souborů
Otevřete svůj ~/.bashrc
soubor v textovém editoru dle vašeho výběru:
$ nano ~/.bashrc
Na konec přidejte následující úryvek:
# Bash Function To Extract File Archives Of Various Types extract () { if [ -f $1 ] ; then case $1 in *.tar.bz2) tar xjf $1 ;; *.tar.gz) tar xzf $1 ;; *.bz2) bunzip2 $1 ;; *.rar) rar x $1 ;; *.gz) gunzip $1 ;; *.tar) tar xf $1 ;; *.tbz2) tar xjf $1 ;; *.tgz) tar xzf $1 ;; *.zip) unzip $1 ;; *.Z) uncompress $1 ;; *.7z) 7z x $1 ;; *) echo "'$1' cannot be extracted via extract()" ;; esac else echo "'$1' is not a valid file" fi }

Stiskněte Ctrl+o
a stiskněte ENTER pro uložení souboru a poté stiskněte Ctrl+
x pro ukončení souboru. Spusťte následující příkaz, aby se změny projevily:
$ source ~/.bashrc
Od této chvíle můžete tuto funkci jednoduše zavolat a extrahovat různé typy archivních souborů.
Například budu extrahovat .7z
typ souboru archivu pomocí příkazu:
$ extract archive.7z
Ukázkový výstup:
7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21 p7zip Version 16.02 (locale=en_IN,Utf16=on,HugeFiles=on,64 bits,4 CPUs Intel(R) Core(TM) i3-2350M CPU @ 2.30GHz (206A7),ASM) Scanning the drive for archives: 1 file, 16013693 bytes (16 MiB) Extracting archive: archive.7z -- Path = archive.7z Type = 7z Physical Size = 16013693 Headers Size = 1204 Method = LZMA:23 Solid = + Blocks = 1 Everything is Ok Folders: 21 Files: 37 Size: 16625007 Compressed: 16013693
Podobně pro extrakci .zip
zadejte soubory, příkaz by byl:
$ extract archive.zip
Před použitím této funkce musíte mít nainstalovaný příslušný správce archivů. Pokud ve vašem systému nejsou nainstalovány žádné podporované archivační nástroje, zobrazí se chybová zpráva jako níže:
$ extract archive.zip bash: /usr/bin/unzip: No such file or directory
Původní autor tohoto scénáře není znám. Tento skript je zmíněn na mnoha místech na internetu. Pokud někdo ví, kdo to napsal, dejte mi prosím vědět v sekci komentářů níže. Podrobnosti o autorovi doplním.
Používáte nějaké další skvělé funkce Bash? Sdílejte je prosím prostřednictvím sekce komentářů. Mohlo by to být užitečné pro mě i pro všechny čtenáře.
Související čtení:
- Přejmenovávejte soubory bez zadávání celého jména dvakrát v systému Linux
- Tipy pro Bash – Jak cp nebo mv a cd jedním příkazem
- [Bash Tipy] Jak používat cd a ls v jednom příkazu
- Jak archivovat soubory a adresáře v Linuxu [část 1]