さまざまな種類のファイルアーカイブを抽出する 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
}ファイルを保存するには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】
