Last active
October 7, 2015 21:11
-
-
Save huseyin/2799ee3da7eaec4a4869 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# | |
PARAM=$1 | |
ARGFILE="" | |
FILENAME="" | |
EXTENSION="" | |
VERSION="0.0.1" | |
USAGE="untarball file(-f): No file selected | |
untarball Usage: untarball [option] [-f file] myfile" | |
HELPTEXT="$USAGE | |
--- | |
Options(Basic): | |
-v, Print version. | |
-h, Print help text. | |
-a, Automatic argument report | |
-u, Print usage text | |
-c, Check packages | |
You can select one of them." | |
function _check_package() { | |
unxzdep=`dpkg-query -l | grep xz-utils | wc -l` | |
unbzipdep=`dpkg-query -l | grep bzip2 | wc -l` | |
unrardep=`dpkg-query -l | grep unrar | wc -l` | |
# Bağımlılıklar belirlendi. Sistemde kurulu olup olmadığına bakıldı. | |
# Paket bağımlılıkları sağlanmış ise durum pas geçilir. | |
# Eğer bağımlılıklar sağlanmamış ise sisteme kurulum gerçekleştirilir. | |
if [ ! $unxzdep -eq 0 ] && [ ! $unrardep -eq 0 ] && [ ! $unbzipdep -eq 0 ] | |
then | |
echo "Warning: packages -> OK" | |
else | |
echo -e "Packages not found! Install? (y/n): \c" | |
read | |
if [ "$REPLY" = "y" ] || [ "$REPLY" = "Y" ] | |
then | |
sudo apt-get install xz-utils | |
sudo apt-get install unrar | |
sudo apt-get install bzip2 | |
else | |
echo "Warning: disallowing by [ $USER ]" | |
exit 1 | |
fi | |
fi | |
} | |
function _parse_and_fargument() { | |
if [ -e $ARGFILE ] | |
then | |
tempext=(`echo $ARGFILE | tr '.' '\n'`) | |
if [ ${#tempext[@]} -eq 0 ] | |
then | |
echo "Error: no input!" | |
exit 1 | |
fi | |
# Eğer dosya *.tar.gz veya *.tar.bz2 uzantılı bir dosya ise dosya | |
# uzantısı .gz veya .bz2 gibi bir karışıklığa yol açabilir. | |
# Örneğin dosya *.gz ile *.tar.gz uzantılı iki dosyanın da dosyanın | |
# uzantısı .gz olarak belirlenebilir. Bu problemcik birçok yoldan | |
# çözüme kavuşturulabilir. | |
# Örneğin; | |
# EXTENSION="${FILENAME#*.}" | |
# bunlardan bir tanesi olabilir. Ancak burada şu şekilde bir problem | |
# yaşanabilir. Dosya adı myarchive.sh.tar.gz şeklinde ise uzantı | |
# .sh.tar.gz şeklinde oluşturulur. Bu nedenle biraz ilkel bir yönteme | |
# başvurulmuştur. Veya pekala çözüm olan joker karakterlerin kullanımı. | |
# *.tar.bz2 zaten istediğimiz şey ama dediğim gibi joker karakter. | |
# Biz şu anda oyunu biraz daha kurallarına göre oynadık. | |
if [ "${tempext[-2]}" = "tar" ] | |
then | |
EXTENSION=".${tempext[-2]}.${tempext[-1]}" | |
else | |
EXTENSION=".${tempext[-1]}" | |
fi | |
FILENAME=`basename $ARGFILE $EXTENSION` | |
else | |
echo "Error: file not found!" | |
exit 1 | |
fi | |
} | |
# Dosya uzantılarına göre arşivlerin dışarı çıkarılma fonksiyonları | |
# burada oluşturulmuştur. | |
function _tbz2() { tar xvjf $ARGFILE; } | |
function _tgz() { tar xvzf $ARGFILE; } | |
function _bz2() { bunzip2 $ARGFILE; } | |
function _tar() { tar xvf $ARGFILE; } | |
function _rar() { unrar x $ARGFILE; } | |
function _gz() { gunzip $ARGFILE; } | |
function _txz() { unxz $ARGFILE; } | |
# Programın ana bloğu burada yer almaktadır. Programcığın -a auto | |
# opsiyonuna -f opsiyonu bağlanmıştır. -V ve -O gibi opsiyonlar detay | |
# opsiyon olarak deneme aşamasındadır. | |
case $PARAM in | |
-v) echo "version: $VERSION";; | |
-h) echo "$HELPTEXT";; | |
-c) _check_package;; | |
-u) echo "$USAGE";; | |
-a) if [ "$2" = "-f" ] | |
then | |
ARGFILE=$3 | |
_parse_and_fargument | |
echo "Extracting archive... [ $FILENAME ]" | |
case $EXTENSION in | |
.tar.bz2) _tbz2;; | |
.tbz2) _tbz2;; | |
.tar.gz) _tgz;; | |
.tar.xz) _txz;; | |
.tgz) _tgz;; | |
.tar) _tar;; | |
.bz2) _bz2;; | |
.rar) _rar;; | |
.zip) _zip;; | |
.gz) _gz;; | |
*) echo "Error: file extension is not recognized!" | |
exit 1;; | |
esac | |
else | |
echo "$HELPTEXT" | |
exit 1 | |
fi ;; | |
*) echo "$HELPTEXT" | |
exit 1;; | |
esac |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
For example,