diff options
Diffstat (limited to 'completions/tar')
-rw-r--r-- | completions/tar | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/completions/tar b/completions/tar index 45f3ff36..374e0692 100644 --- a/completions/tar +++ b/completions/tar @@ -12,7 +12,7 @@ _tar() return 0 fi - local tars='@(@(tar|gem|spkg)?(.@(Z|[gx]z|bz?(2)|lzma))|t@([glx]z|bz?(2)))' + local tars='@(@(tar|gem|spkg)?(.@(Z|[bgx]z|bz2|lz?(ma)))|t@([abglx]z|b?(z)2))' case ${words[1]} in --*) @@ -21,11 +21,11 @@ _tar() if [[ $cword -eq 2 ]]; then ext='@(tar|gem|spkg)' case ${words[1]} in - *a*) ext="$tars" ;; - *z*) ext='t?(ar.)gz' ;; - *Z*) ext='tar.Z' ;; - *[jy]*) ext='t?(ar.)bz?(2)' ;; - *J*) ext='t?(ar.)xz' ;; + *a*) ext="$tars" ;; + *z*) ext='t?(ar.)gz' ;; + *Z*) ext='ta@(r.Z|z)' ;; + *[jy]*) ext='t@(?(ar.)bz?(2)|b2)' ;; + *J*) ext='t?(ar.)xz' ;; esac _filedir $ext else @@ -33,21 +33,21 @@ _tar() fi return 0 ;; - +([^IZzJjy])f) + +([^ZzJjy])f) ext="$tars" - regex='\(\(tar\|gem\|spkg\)\(\.\(Z\|[gx]z\|bz2\?\|lzma\)\)\?\|t\([glx]z\|bz2\?\)\)' + regex='\(\(tar\|gem\|spkg\)\(\.\(Z\|[bgx]z\|bz2\|lz\(ma\)\?\)\)\?\|t\([abglx]z\|bz\?2\)\)' ;; *[Zz]*f) - ext='@(t?(ar.)|gem.|spkg.)@(gz|Z)' - regex='\(t\(ar\.\)\?\|gem\.\|spkg\.\)\(gz\|Z\)' + ext='@(@(t?(ar.)|gem.|spkg.)@(gz|Z)|taz)' + regex='\(\(t\(ar\.\)\?\|gem\.\|spkg\.\)\(gz\|Z\)\|taz\)' ;; - *[Ijy]*f) - ext='@(@(t?(ar.)|gem.)bz?(2)|spkg)' - regex='\(\(t\(ar\.\)\?\|gem\.\)bz2\?\|spkg\)' + *[jy]*f) + ext='@(@(t?(ar.)|gem.)bz?(2)|spkg|tb2)' + regex='\(\(t\(ar\.\)\?\|gem\.\)bz2\?\|spkg\|tb2\)' ;; *[J]*f) - ext='@(t?(ar.)|gem.|spkg.)@(lz?(ma)|xz)' - regex='\(t\(ar\.\)\?\|gem\.\|spkg\.\)\(lzma\|xz\)\?' + ext='@(@(tar|gem|spkg).@(lzma|xz)|t[lx]z)' + regex='\(\(tar\|gem\|spkg\)\.\(lzma\|xz\)\|t[lx]z\)' ;; *) _filedir @@ -56,13 +56,13 @@ _tar() esac case $prev in - *$ext) + *${ext:-$tars}) # complete on files in tar file # # get name of tar file from command line tar=$( sed -e 's/^.* \([^ ]*'$regex'\) .*$/\1/' <<<"${words[@]}" ) # devise how to untar and list it - untar=t${words[1]//[^IJzjyf]/} + untar=t${words[1]//[^Jzjyf]/} local IFS=$'\n' COMPREPLY=( $( compgen -W "$( printf '%s\n' $( tar $untar $tar \ |