Много раз мне нужно извлекать различные виды архивных файлов с помощью запятой. Но не все время помню точную команду для любого типа файлового архива. Итак, я должен тратить время и искать снова. Как я могу избежать этого?
Можно использовать следующий сценарий оболочки (я назвал его extract
и я вставил его ~/bin
):
#!/bin/bash if [ $# -lt 1 ];then echo "Usage: `basename $0` FILES" exit 1 fi # I found the following function at https://unix.stackexchange.com/a/168/37944 # which I improved it a little. Many thanks to sydo for this idea. extract () { for arg in $@ ; do if [ -f $arg ] ; then case $arg in *.tar.bz2) tar xjf $arg ;; *.tar.gz) tar xzf $arg ;; *.bz2) bunzip2 $arg ;; *.gz) gunzip $arg ;; *.tar) tar xf $arg ;; *.tbz2) tar xjf $arg ;; *.tgz) tar xzf $arg ;; *.zip) unzip $arg ;; *.Z) uncompress $arg ;; *.rar) rar x $arg ;; # 'rar' must to be installed *.jar) jar -xvf $arg ;; # 'jdk' must to be installed *) echo "'$arg' cannot be extracted via extract()" ;; esac else echo "'$arg' is not a valid file" fi done } extract $@
Не забывайте делать исполняемый файл сценария:
chmod +x ~/bin/extract
Использование:
extract file_1 file_2 ... file_n
Команда dtrx
- ваш друг в этом вопросе.
Он распаковывает любой архивный файл, угадывая его тип. Это также гарантирует, что файлы, которые вы распаковали, будут помещены в новый каталог; избегая путаницы текущего рабочего каталога с кучей файлов.
sudo aptitude install dtrx
dtrx stuff.zip