about summary refs log tree commit diff
path: root/Completion/Unix/Command
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Unix/Command')
-rw-r--r--Completion/Unix/Command/_hexdump35
-rw-r--r--Completion/Unix/Command/_last42
2 files changed, 60 insertions, 17 deletions
diff --git a/Completion/Unix/Command/_hexdump b/Completion/Unix/Command/_hexdump
new file mode 100644
index 000000000..f700ca683
--- /dev/null
+++ b/Completion/Unix/Command/_hexdump
@@ -0,0 +1,35 @@
+#compdef hexdump hd
+
+local -a args fmts optpar
+fmts=(
+ {--one-byte-octal,-b}'[one-byte octal display]'
+ {--one-byte-char,-c}'[one-byte character display]'
+ {--two-bytes-decimal,-d}'[two-byte decimal display]'
+ {--two-bytes-octal,-o}'[two-byte octal display]'
+ {--two-bytes-hex,-x}'[two-byte hexadecimal display]'
+ {--format=,-e+}'[specify format string to be used for displaying data]:format'
+ {--format-file=,-f+}'[specify file that contains format strings]:file:_files'
+)
+args=(
+ '(H -n --length)'{--length=,-n+}'[interpret only specified amount of input]:length (bytes)'
+ '(H -s --skip)'{--skip=,-s+}'[skip specified bytes at the beginning]:offset (bytes)'
+ '(H -v --no-squeezing)'{--no-squeezing,-v}'[output identical lines]'
+)
+
+[[ $service = hexdump ]] && fmts+=( {--canonical,-C}'[canonical hex+ASCII display]' )
+
+if [[ $OSTYPE = linux* ]]; then
+  args+=(
+    '(-L --color)'{-L+,--color=}'[interpret color formatting specifiers colors are enabled by default]:mode'
+    + H
+    '(- *)'{-h,--help}'[display usage information]'
+    '(- *)'{-V,--version}'[display version information]'
+  )
+else
+  # strip long options by taking every second element
+  print -v fmts -f '%2$s' -- "$fmts[@]"
+  print -v args -f '%2$s' -- "$args[@]"
+  optpar=( -A "-*" )
+fi
+
+_arguments -s -S $optpar '*:file:_files' $args + '(formats)' '(H)'$^fmts
diff --git a/Completion/Unix/Command/_last b/Completion/Unix/Command/_last
index f198e0fff..2013cc1c2 100644
--- a/Completion/Unix/Command/_last
+++ b/Completion/Unix/Command/_last
@@ -4,19 +4,20 @@ local pattern arg args ttys
 ttys=( /dev/tty*(N) /dev/pts/*(N) reboot )
 ttys=( ${ttys#/dev/} )
 
+[[ $OSTYPE = linux-gnu ]] || args=( -A "-*" )
 for pattern arg in \
-  '(solaris*|linux-gnu)' '-a[display hostname in last column]' \
-  '((free|net|open)bsd*|darwin*|dragonfly*|linux-gnu)' '-h[limit sessions by hostname]:host:_hosts' \
-  '((free|open)bsd*|linux-gnu)' '-s[report duration in seconds]' \
-  '(freebsd*|openbsd*)' '-d[limit sessions to those active at snapshot time]:time ([[CC]YY][MMDD]hhmm[.SS])' \
-  '((net|free|open)bsd*|darwin*|dragonfly*)' '-t[limit sessions by tty]:tty:_ttys -D' \
+  '(solaris*|linux-gnu)' '(--hostlast)-a[display hostname in last column]' \
+  '((free|net|open)bsd*|darwin*|dragonfly*)' '-h+[limit sessions by hostname]:host:_hosts' \
+  '((free|open)bsd*)' '-s[report duration in seconds]' \
+  '(freebsd*|openbsd*)' '-d+[limit sessions to those active at snapshot time]:time ([[CC]YY][MMDD]hhmm[.SS])' \
+  '((net|free|open)bsd*|darwin*|dragonfly*)' '-t+[limit sessions by tty]:tty:_ttys -D' \
   'openbsd*' '-c[calculate total time]' \
-  '^darwin*' '-f[specify account file]:file:_files' \
-  '(solaris*|linux-gnu|freebsd*|openbsd*)' '-n[specify number of lines to show]:number' \
+  '^darwin*' '(--file)-f+[specify account file]:file:_files' \
+  '(solaris*|linux-gnu|freebsd*|openbsd*)' '(--limit)-n+[specify number of lines to show]:number' \
   '((open|net)bsd*|dragonfly*)' '-T[show more detailed time information including year and seconds]' \
   'netbsd*' '-x[assume file is in wtmpx(5) format]' \
   'netbsd*' '-n[show IP of remote hosts]' \
-  'freebsd*' '-w[show seconds in durarion field]' \
+  'freebsd*' '-w[show seconds in duration field]' \
   'freebsd*' '-y[show year in session start time]'
 do
   [[ $OSTYPE = $~pattern ]] && args+=( $arg )
@@ -32,14 +33,21 @@ case $OSTYPE in
   ;;
   linux-gnu)
     args+=(
-      '-R[suppress display of hostname field]'
-      '-d[translate IP to hostname]'
-      '-F[show full login and logout times and dates]'
-      '-i[show IP of remote hosts]'
-      '-o[read old-format wtmp]'
-      '-t[limit sessions to those active at snapshot time]:time (YYYYMMDDhhmmss)'
-      '-w[show full user and domain names]'
-      '-x[display shutdown/runlevel entries]'
+      '(-a)--hostlast[display hostname in last column]'
+      '(-d --dns -i --ip)'{-d,--dns}'[translate IP to hostname]'
+      '(-f)--file=[specify account file]:file:_files'
+      '(-F --fulltimes)'{-F,--fulltimes}'[show full login and logout times and dates]'
+      '(-i --ip -d --dns)'{-i,--ip}'[show IP of remote hosts]'
+      '(-n)--limit=[specify number of lines to show]:number'
+      '(-R --nohostname)'{-R,--nohostname}'[suppress display of hostname field]'
+      '(-s --since)'{-s+,--since=}'[display lines since the specified time]:time (YYYYMMDDhhmmss)'
+      '(-t --until)'{-t+,--until=}'[display lines until the specified time]:time (YYYYMMDDhhmmss)'
+      '(-p --present)'{-p+,--present=}'[display who were present at the specified time]:time (YYYYMMDDhhmmss)'
+      '(-w --fullnames)'{-w,--fullnames}'[show full user and domain names]'
+      '(-x --system)'{-x,--system}'[display shutdown/runlevel entries]'
+      '--time-format=[show timestamps in the specified format]:format:(notime short full iso)'
+      '(- *)'{-h,--help}'[display usage information]'
+      '(- *)'{-V,--version}'[display version information]'
     )
   ;;
 esac
@@ -50,4 +58,4 @@ else
   args+=( '*:user:_users' )
 fi
 
-_arguments -s $args
+_arguments -s -S $args