mirror of
				https://github.com/ohmyzsh/ohmyzsh.git
				synced 2025-11-04 13:21:19 +08:00 
			
		
		
		
	Added extract plugin.
This commit is contained in:
		
							parent
							
								
									3bb21afa88
								
							
						
					
					
						commit
						1db6575f14
					
				@ -22,4 +22,3 @@ alias sl=ls # often screw this up
 | 
			
		||||
 | 
			
		||||
alias afind='ack-grep -il'
 | 
			
		||||
 | 
			
		||||
alias x=extract
 | 
			
		||||
 | 
			
		||||
@ -15,38 +15,3 @@ function take() {
 | 
			
		||||
  cd $1
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function extract() {
 | 
			
		||||
    unset REMOVE_ARCHIVE
 | 
			
		||||
    
 | 
			
		||||
    if test "$1" = "-r"; then
 | 
			
		||||
        REMOVE=1
 | 
			
		||||
        shift
 | 
			
		||||
    fi
 | 
			
		||||
  if [[ -f $1 ]]; then
 | 
			
		||||
    case $1 in
 | 
			
		||||
      *.tar.bz2) tar xvjf $1;;
 | 
			
		||||
      *.tar.gz) tar xvzf $1;;
 | 
			
		||||
      *.tar.xz) tar xvJf $1;;
 | 
			
		||||
      *.tar.lzma) tar --lzma -xvf $1;;
 | 
			
		||||
      *.bz2) bunzip $1;;
 | 
			
		||||
      *.rar) unrar x $1;;
 | 
			
		||||
      *.gz) gunzip $1;;
 | 
			
		||||
      *.tar) tar xvf $1;;
 | 
			
		||||
      *.tbz2) tar xvjf $1;;
 | 
			
		||||
      *.tgz) tar xvzf $1;;
 | 
			
		||||
      *.zip) unzip $1;;
 | 
			
		||||
      *.Z) uncompress $1;;
 | 
			
		||||
      *.7z) 7z x $1;;
 | 
			
		||||
      *) echo "'$1' cannot be extracted via >extract<";;
 | 
			
		||||
    esac
 | 
			
		||||
 | 
			
		||||
    if [[ $REMOVE_ARCHIVE -eq 1 ]]; then
 | 
			
		||||
        echo removing "$1";
 | 
			
		||||
        /bin/rm "$1";
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
  else
 | 
			
		||||
    echo "'$1' is not a valid file"
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										8
									
								
								plugins/extract/_extract
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								plugins/extract/_extract
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,8 @@
 | 
			
		||||
#compdef extract
 | 
			
		||||
#autoload
 | 
			
		||||
 | 
			
		||||
_arguments \
 | 
			
		||||
  '(-r --remove)'{-r,--remove}'[Remove archive.]' \
 | 
			
		||||
  "*::archive file:_files -g '(#i)*.(tar|tgz|tbz|tbz2|txz|tlz|gz|bz2|xz|lzma|Z|zip|rar|7z|deb)(-.)'" && return 0
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										83
									
								
								plugins/extract/extract.plugin.zsh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								plugins/extract/extract.plugin.zsh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,83 @@
 | 
			
		||||
# ------------------------------------------------------------------------------
 | 
			
		||||
#          FILE:  extract.plugin.zsh
 | 
			
		||||
#   DESCRIPTION:  oh-my-zsh plugin file.
 | 
			
		||||
#        AUTHOR:  Sorin Ionescu (sorin.ionescu@gmail.com)
 | 
			
		||||
#       VERSION:  1.0.0
 | 
			
		||||
# ------------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function extract() {
 | 
			
		||||
  local remove_archive
 | 
			
		||||
  local success
 | 
			
		||||
  local file_name
 | 
			
		||||
  local extract_dir
 | 
			
		||||
 | 
			
		||||
  if (( $# == 0 )); then
 | 
			
		||||
    echo "Usage: extract [-option] [file ...]"
 | 
			
		||||
    echo
 | 
			
		||||
    echo Options:
 | 
			
		||||
    echo "    -r, --remove    Remove archive."
 | 
			
		||||
    echo
 | 
			
		||||
    echo "Report bugs to <sorin.ionescu@gmail.com>."
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  remove_archive=1
 | 
			
		||||
  if [[ "$1" == "-r" ]] || [[ "$1" == "--remove" ]]; then
 | 
			
		||||
    remove_archive=0 
 | 
			
		||||
    shift
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
  while (( $# > 0 )); do
 | 
			
		||||
    if [[ ! -f "$1" ]]; then
 | 
			
		||||
      echo "extract: '$1' is not a valid file" 1>&2
 | 
			
		||||
      shift
 | 
			
		||||
      continue
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    success=0
 | 
			
		||||
    file_name="$( basename "$1" )"
 | 
			
		||||
    extract_dir="$( echo "$file_name" | sed "s/\.${1##*.}//g" )"
 | 
			
		||||
    case "$1" in
 | 
			
		||||
      (*.tar.gz|*.tgz) tar xvzf "$1" ;;
 | 
			
		||||
      (*.tar.bz2|*.tbz|*.tbz2) tar xvjf "$1" ;;
 | 
			
		||||
      (*.tar.xz|*.txz) tar xvJf "$1" ;;
 | 
			
		||||
      # (*.tar.xz|*.txz) xzcat "$1" | tar xvf - ;;
 | 
			
		||||
      (*.tar.lzma|*.tlz) tar --lzma -xvf "$1" ;;
 | 
			
		||||
      # (*.tar.lzma|*.tlz) lzcat "$1" | tar xvf - ;;
 | 
			
		||||
      (*.tar) tar xvf "$1" ;;
 | 
			
		||||
      (*.gz) gunzip "$1" ;;
 | 
			
		||||
      (*.bz2) bunzip2 "$1" ;;
 | 
			
		||||
      (*.xz) unxz "$1" ;;
 | 
			
		||||
      (*.lzma) unlzma "$1" ;;
 | 
			
		||||
      (*.Z) uncompress "$1" ;;
 | 
			
		||||
      (*.zip) unzip "$1" -d $extract_dir ;;
 | 
			
		||||
      (*.rar) unrar e -ad "$1" ;;
 | 
			
		||||
      (*.7z) 7za x "$1" ;;
 | 
			
		||||
      (*.deb)
 | 
			
		||||
        mkdir -p "$extract_dir/control"
 | 
			
		||||
        mkdir -p "$extract_dir/data"
 | 
			
		||||
        cd "$extract_dir"; ar vx "../${1}" > /dev/null
 | 
			
		||||
        cd control; tar xzvf ../control.tar.gz
 | 
			
		||||
        cd ../data; tar xzvf ../data.tar.gz
 | 
			
		||||
        cd ..; rm *.tar.gz debian-binary
 | 
			
		||||
        cd ..
 | 
			
		||||
      ;;
 | 
			
		||||
      (*) 
 | 
			
		||||
        echo "extract: '$1' cannot be extracted" 1>&2
 | 
			
		||||
        success=1 
 | 
			
		||||
      ;; 
 | 
			
		||||
    esac
 | 
			
		||||
 | 
			
		||||
    (( success = $success > 0 ? $success : $? ))
 | 
			
		||||
    (( $success == 0 )) && (( $remove_archive == 0 )) && rm "$1"
 | 
			
		||||
    shift
 | 
			
		||||
  done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
alias x=extract
 | 
			
		||||
 | 
			
		||||
# add extract completion function to path
 | 
			
		||||
fpath=($ZSH/plugins/extract $fpath)
 | 
			
		||||
autoload -U compinit
 | 
			
		||||
compinit -i
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user