ウェブサイト検索

さまざまな種類のファイルアーカイブを抽出する Bash 関数


さまざまなタイプのアーカイブファイルを抽出できるアプリケーションは非常に多くあります。各アーカイブツールのすべてのオプションやパラメータを覚えるのは難しいでしょう。心配はいりません!今日は、Linuxでさまざまなタイプのファイルアーカイブを抽出する簡単なBash関数を見つけました。

この Bash 関数は、.tar.bz2、.tar.bz、.bz2、.rar、.zip、.7z など、最も一般的に使用されるアーカイブ形式を抽出することができます。アーカイブファイルを抽出するために実際のアーカイブアプリケーションを使用する必要はありません!この関数を ~/.bashrc ファイルに追加して呼び出すだけで、アーカイブファイルを抽出できます。適切なアーカイブツールを自動的に見つけて使用し、ファイルを抽出します。フラグやオプションを覚える必要はありません!

ファイルアーカイブを抽出するためのBash関数

お好きなテキストエディタで ~/.bashrc ファイルを開きます:

$ nano ~/.bashrc

次のスニペットを最後に追加してください:

# 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
}

さまざまな種類のファイルアーカイブを抽出するBash関数

ファイルを保存するにはCtrl+oを押してENTERを押し、その後ファイルを終了するにはCtrl+xを押します。変更を反映させるには、以下のコマンドを実行してください:

$ source ~/.bashrc

これからは、この関数を使うだけで、さまざまな種類のアーカイブファイルを抽出できます。

例えば、次のコマンドを使用して .7z アーカイブファイルタイプを抽出しようとしています:

$ extract archive.7z 

サンプル出力:

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

同様に、.zip タイプのファイルを抽出するには、コマンドは次のようになります:

$ extract archive.zip 

この機能を使用する前に、適切なアーカイブマネージャがインストールされていることを確認してください。システムにサポートされているアーカイブツールがインストールされていない場合、以下のようなエラーメッセージが表示されます。

$ extract archive.zip 
bash: /usr/bin/unzip: No such file or directory

このスクリプトの元の作者は不明です。このスクリプトはインターネット上の複数の場所で言及されています。もし誰かがこのスクリプトの作者を知っている場合は、以下のコメント欄で教えてください。作者の詳細を追加します。

他のかっこいいBash関数を使っていますか?コメント欄で共有してください。それは私にとっても、そしてすべての読者にとっても役立つかもしれません。

関連記事:

  • Linuxでファイル名を2回入力せずに名前を変更する
  • Bashのコツ - 1つのコマンドでcpやmvしてcdする方法
  • [Bashのコツ] 1つのコマンドでcdとlsを行う方法
  • Linuxでファイルとディレクトリをアーカイブする方法【パート1】