سلام دوستان گل
موضوع اینه که شما فایلهایی که از اینترنت دریافت میکنی هر کدوم یک فرمتی دارن (از غیب گفتم
) موضوع اصلی سر فایلهای فشرده است که هر کدوم یه فرمتی دارن و هر فرمت رو باید به شکل خاصی استخراج کرد فایل اصلی رو، برای همین منظور یه تابعی هست خودمم ننوشتمش ولی بخونیدش واضحه که دقیقاً داره چی کار میکنه به اسم extract یعنی استخراج این کدشه:
function extract {
if [ -z "$1" ]; then
# display usage if no parameters given
echo "Usage: extract <path/file_name>.<zip|rar|bz2|gz|tar|tbz2|tgz|Z|7z|xz|ex|tar.bz2|tar.gz|tar.xz>"
echo " extract <path/file_name_1.ext> [path/file_name_2.ext] [path/file_name_3.ext]"
else
for n in "$@"
do
if [ -f "$n" ] ; then
case "${n%,}" in
*.cbt|*.tar.bz2|*.tar.gz|*.tar.xz|*.tbz2|*.tgz|*.txz|*.tar)
tar xvf "$n" ;;
*.lzma) unlzma ./"$n" ;;
*.bz2) bunzip2 ./"$n" ;;
*.cbr|*.rar) unrar x -ad ./"$n" ;;
*.gz) gunzip ./"$n" ;;
*.cbz|*.epub|*.zip) unzip ./"$n" ;;
*.z) uncompress ./"$n" ;;
*.7z|*.apk|*.arj|*.cab|*.cb7|*.chm|*.deb|*.dmg|*.iso|*.lzh|*.msi|*.pkg|*.rpm|*.udf|*.wim|*.xar)
7z x ./"$n" ;;
*.xz) unxz ./"$n" ;;
*.exe) cabextract ./"$n" ;;
*.cpio) cpio -id < ./"$n" ;;
*.cba|*.ace) unace x ./"$n" ;;
*.zpaq) zpaq x ./"$n" ;;
*.arc) arc e ./"$n" ;;
*.cso) ciso 0 ./"$n" ./"$n.iso" && \
extract $n.iso && \rm -f $n ;;
*)
extract $n.iso && \rm -f $n ;;
*)
echo "extract: '$n' - unknown archive method"
return 1
;;
esac
else
echo "'$n' - file does not exist"
return 1
fi
done
fi
}
برای استفادهاش هم خیلی راحته اگر از بش (bash) استفاده میکنید کل کد رو کپی کنید و بگذارید انتهای فایل
~/.bashrc
و اگر زی شل (zsh) استفاده میکنید باز هم کپی کنید بگذارید انتهای فایل
~/.zshrc
دفعه بعدی که ترمینال باز کنید قابلیت استفاده از تابع رو دارین
حالا موضوع سر اینه اگر از فیش (fish) استفاده کنیم چی؟ آدرس فایل تنظیماتش میشه:
~/.config/fish/config.fish
ولی یه مقدار کدش فرق میکنه یعنی همین کد رو کپی کنید به درد نمیخوره
کسی میتونه این اسکریپت رو به فیش تغییر بده؟
حتی قبلاً دیدم از این کد به عنوان فایل اجرایی استفاده شده اگر بشه همین کار رو هم کرد خیلی عالی میشه.