mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2026-06-19 05:12:49 +02:00
add plugin 'universalarchive()' to conveniently compress files
This commit is contained in:
parent
2642f0a8b4
commit
1c389ea4e5
3 changed files with 115 additions and 0 deletions
59
plugins/ua/universalarchive.plugin.zsh
Normal file
59
plugins/ua/universalarchive.plugin.zsh
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
alias ua='universalarchive'
|
||||
alias ax='universalarchive tar.xz '
|
||||
|
||||
# exclusively POSIX shell syntax is used
|
||||
|
||||
universalarchive() { # compress a file or folder
|
||||
local file
|
||||
local parent
|
||||
local name
|
||||
|
||||
local type="$1"
|
||||
local input="$2"
|
||||
|
||||
if [ -f "$input" ]; then
|
||||
if [ "$#" -eq 2 ]; then
|
||||
name="${input%.[^.]*}"
|
||||
else
|
||||
file="$(realpath "$input")"
|
||||
parent="${file%/*}"
|
||||
name="${parent##*/}"
|
||||
fi
|
||||
elif [ -d "$input" ]; then
|
||||
name="${input%/*}"
|
||||
else
|
||||
echo "universalarchive(): archive a file or directory."
|
||||
echo "Usage: ua <archive type> <files>"
|
||||
echo "Error: Please give a valid file or directory name!"
|
||||
fi
|
||||
|
||||
if [ -f "${name}.${type}" ]; then
|
||||
name=$(mktemp --dry-run "./${name}_XXX.${type}")
|
||||
fi
|
||||
|
||||
case "$type" in
|
||||
tar) shift; tar cvf "${name}.tar" "${@%%}" ;;
|
||||
tbz|tar.bz) shift; tar cvjf "${name}.tar.bz2" "${@%}" ;;
|
||||
tbz2|tar.bz2) shift; tar cvjf "${name}.tar.bz2" "${@%%}" ;;
|
||||
txz|tar.xz) shift; env XZ_OPT=-T0 tar cvJf "${name}.tar.xz" "${@%%}" ;;
|
||||
tgz|tar.gz) shift; tar cvzf "${name}.tar.gz" "${@%%}" ;;
|
||||
tZ|tar.Z) shift; tar cvZf "${name}.tar.Z" "${@%%}" ;;
|
||||
gz|gzip) shift; gzip -vcf "${@%%}" > "${name}.gz" ;;
|
||||
bz|bzip) shift; bzip2 -vcf "${@%%}" > "${name}.bz" ;;
|
||||
bz2|bzip2) shift; bzip2 -vcf "${@%%}" > "${name}.bz2" ;;
|
||||
Z|compress) shift; compress -vcf "${@%%}" > "${name}.Z" ;;
|
||||
zip) shift; zip -rull "${name}.zip" "${@%%}" ;;
|
||||
7z|7zip) shift; 7z u "${name}.7z" "${@%%}" ;;
|
||||
rar) shift; rar a "${name}.rar" "${@%%}" ;;
|
||||
lzo) shift; lzop -vc "${@%%}" > "${name}.lzo" ;;
|
||||
xz) shift; xz -vc -T0 "${@%%}" > "${name}.xz" ;;
|
||||
lzma) shift; lzma -vc "${@%%}" > "${name}.lzma" ;;
|
||||
*) echo "universalarchive(): archive a file or directory."
|
||||
echo "Usage: ua <archive type> <files>"
|
||||
echo "Example: ua tbz2 PKGBUILD"
|
||||
echo "Please specify archive type and files."
|
||||
echo "Valid archive types are:"
|
||||
echo "tar, tbz2, txz, tgz, tZ, gz, bz2, Z,"
|
||||
echo "zip, 7z, rar, lzo, xz, and lzma." ;;
|
||||
esac
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue