summaryrefslogtreecommitdiffstats
path: root/Completion/Unix/Command
diff options
context:
space:
mode:
authorOliver Kiddle <opk@zsh.org>2026-05-14 22:08:17 +0200
committerOliver Kiddle <opk@zsh.org>2026-05-14 22:08:17 +0200
commitf3cd3a4608d938782bdc881272baa3949d3c37ae (patch)
tree1a2fd64fbd855bb9dead7bb21bc6f5486ef57361 /Completion/Unix/Command
parent54518: util: add git merge driver zsh-merge-changelog (diff)
downloadzsh-f3cd3a4608d938782bdc881272baa3949d3c37ae.tar
zsh-f3cd3a4608d938782bdc881272baa3949d3c37ae.tar.gz
zsh-f3cd3a4608d938782bdc881272baa3949d3c37ae.tar.bz2
zsh-f3cd3a4608d938782bdc881272baa3949d3c37ae.tar.lz
zsh-f3cd3a4608d938782bdc881272baa3949d3c37ae.tar.xz
zsh-f3cd3a4608d938782bdc881272baa3949d3c37ae.tar.zst
zsh-f3cd3a4608d938782bdc881272baa3949d3c37ae.zip
54526: update completions for FreeBSD 14.4 and 15.0
Diffstat (limited to 'Completion/Unix/Command')
-rw-r--r--Completion/Unix/Command/_column6
-rw-r--r--Completion/Unix/Command/_id4
-rw-r--r--Completion/Unix/Command/_ls14
-rw-r--r--Completion/Unix/Command/_ps75
-rw-r--r--Completion/Unix/Command/_service10
-rw-r--r--Completion/Unix/Command/_timeout6
-rw-r--r--Completion/Unix/Command/_zdump26
-rw-r--r--Completion/Unix/Command/_zfs118
8 files changed, 208 insertions, 51 deletions
diff --git a/Completion/Unix/Command/_column b/Completion/Unix/Command/_column
index 687d7620f..737bb4561 100644
--- a/Completion/Unix/Command/_column
+++ b/Completion/Unix/Command/_column
@@ -18,6 +18,12 @@ _pick_variant -r variant \
--version
case $variant in
+ freebsd*)
+ args=(
+ '-l+[specify maximum number of input columns]:columns'
+ )
+ ;|
+
util-linux)
aopts=()
args=(
diff --git a/Completion/Unix/Command/_id b/Completion/Unix/Command/_id
index 64b8c9b37..ce18ed719 100644
--- a/Completion/Unix/Command/_id
+++ b/Completion/Unix/Command/_id
@@ -44,8 +44,10 @@ else
freebsd*)
args+=(
'(-)-A[print process audit user ID]'
- '(-)-M[print MAC label of the current process]'
+ '(- 1)-M[print MAC label of the current process]'
'(-)-c[print current login class]'
+ '(-)-d[print home directory]'
+ '(-)-s[print shell]'
)
;|
darwin*|dragonfly*|freebsd*|netbsd*|openbsd*)
diff --git a/Completion/Unix/Command/_ls b/Completion/Unix/Command/_ls
index a92b91b31..5cd2e7f54 100644
--- a/Completion/Unix/Command/_ls
+++ b/Completion/Unix/Command/_ls
@@ -108,6 +108,12 @@ if ! _pick_variant gnu='(GNU|uutils)' unix --version; then
'-Z[display MAC label]'
)
fi
+ if [[ $OSTYPE = freebsd<15->.* ]]; then
+ arguments+=(
+ '(--group-directories-first)--group-directories=:order:(first last)'
+ '(--group-directories)--group-directories-first'
+ )
+ fi
if [[ $OSTYPE = darwin* ]]; then
arguments+=(
'-@[display extended attribute keys and sizes in long listing]'
@@ -118,14 +124,18 @@ if ! _pick_variant gnu='(GNU|uutils)' unix --version; then
'-%[distinguish dataless files and directories with a %]'
)
fi
- if [[ $OSTYPE = solaris* ]]; then
+ if [[ $OSTYPE = (aix|solaris)* ]]; then
arguments+=(
'(-q)-b[print octal escapes for control characters]'
'(-l -1 -C -m -x)-o[long listing but without group information]'
'(-l -t -s -r -a)-f[interpret each argument as a directory]'
+ '-H[follow symlinks on the command line]'
+ )
+ fi
+ if [[ $OSTYPE = solaris* ]]; then
+ arguments+=(
'(-E -l)-e[long listing with full and consistent date/time]'
'(-e -l)-E[long listing with ISO format date/time]'
- '-H[follow symlinks on the command line]'
'-v[long listing with verbose ACL information]'
'-V[long listing with compact ACL information]'
'-@[long listing with marker for extended attribute information]'
diff --git a/Completion/Unix/Command/_ps b/Completion/Unix/Command/_ps
index 7d83f90ea..57fee983c 100644
--- a/Completion/Unix/Command/_ps
+++ b/Completion/Unix/Command/_ps
@@ -36,12 +36,8 @@ args=(
'*-U+[select processes by real user]:user:_sequence -s , _users'
'-o+[specify output format]:property:_sequence -s , _ps_props -'
- '-c[show scheduler properties]'
'-f[full listing]'
- '-j[show session ID and process group ID]'
'-l[long listing]'
- '-L[show information about each light weight process]'
- '-y[show RSS in place of ADDR (used with -l)]'
)
bsd=(
@@ -51,15 +47,10 @@ bsd=(
'x[include processes with no controlling terminal]'
'(j l s u X)v[output in virtual memory format]'
'*w[wide output]'
- 'L[display all format specifiers]'
- 'S[include child process data with the parent]'
- 'T[select processes attached to current terminal]'
)
bsdarg=(
'*p[select processes by ID]'
'*t[select processes by attached terminal]'
- 'O[specify additional output fields]'
- 'o[specify output format]'
)
case $OSTYPE in
@@ -76,11 +67,30 @@ case $OSTYPE in
'-Z[show zone with which process is associated]'
)
;;
- linux-gnu|dragonfly*|freebsd*|netbsd*|openbsd*)
+ ^aix*)
+ args+=(
+ '-L[show information about each light weight process]'
+ '-c[show scheduler properties]'
+ '-j[show session ID and process group ID]'
+ '-y[show RSS in place of ADDR (used with -l)]'
+ )
+ bsd+=(
+ 'L[display all format specifiers]'
+ 'S[include child process data with the parent]'
+ 'T[select processes attached to current terminal]'
+ )
+ bsdarg+=(
+ 'O[specify additional output fields]'
+ 'o[specify output format]'
+ )
+ ;|
+ linux-gnu|aix*|dragonfly*|freebsd*|netbsd*|openbsd*)
bsd+=(
'e[show environment after command]'
'(j l s v X)u[output in resource usage format]'
)
+ ;|
+ linux-gnu|dragonfly*|freebsd*|netbsd*|openbsd*)
bsdarg+=(
'N[set namelist file for WCHAN display]'
'*U[select processes by effective user]'
@@ -89,10 +99,14 @@ case $OSTYPE in
linux-gnu|dragonfly*|freebsd*|openbsd*)
bsd+=( 'H[show threads as if they were processes]' )
;|
+ aix*|darwin*|dragonfly*|freebsd*|netbsd*|openbsd*)
+ bsd+=(
+ 'c[show just executable name for command]'
+ )
+ ;|
darwin*|dragonfly*|freebsd*|netbsd*|openbsd*)
bsd+=(
'A[select every process]'
- 'c[show just executable name for command]'
'h[repeat header lines, one per page of output]'
'(r)m[sort by memory usage]'
'(m)r[sort by CPU usage]'
@@ -110,9 +124,6 @@ case $OSTYPE in
darwin*|freebsd*)
bsd+=( 'X[skip processes with no controlling terminal]' )
;|
- freebsd*|dragonfly*)
- bsd+=( 'f[show command and environment for swapped out processes]' )
- ;|
netbsd*|openbsd*)
bsdarg+=( 'W[extract swap information from specified file]' )
;|
@@ -121,6 +132,26 @@ case $OSTYPE in
'd[show process hierarchy]'
)
;|
+ aix*)
+ args+=(
+ '-M[list 64 bit processes]'
+ "-N[don't gather thread statistics]"
+ '-L+[show process descendants]:pid list:_sequence _pids'
+ '-T+[show process tree rooted at given pid]:pid:_pids'
+ '-P[display project info]'
+ "-X[don't truncate user and group names]"
+ '-Z[display page size settings]'
+ '-k[list kernel processes]'
+ '-c+[filter by workload management class]:class list'
+ '-m[list kernel threads]'
+ )
+ bsd+=(
+ 'g[display all processes]'
+ 'n[numerical output]'
+ 's[display kernel stack size of each process]'
+ "X[don't truncate user and group names]"
+ )
+ ;|
darwin*)
bsd+=(
'd[select all processes except session leaders]'
@@ -143,13 +174,19 @@ case $OSTYPE in
fi
;;
dragonfly*)
- bsd+=( 'R[subsort by parent/child chain]' )
+ bsd+=(
+ 'R[subsort by parent/child chain]'
+ 'f[show command and environment for swapped out processes]'
+ )
;;
freebsd*)
bsd+=(
- '*J[select processes by jail ID]'
'Z[show mac label]'
)
+ bsdarg+=(
+ 'D[expand list of selected processes based on process tree]'
+ '*J[select processes by jail ID]'
+ )
;;
netbsd*) bsd+=( '(j l u v)s[output in thread format]' ) ;;
openbsd*)
@@ -205,8 +242,9 @@ case $OSTYPE in
;;
esac
-if (( CURRENT > 1 )) && [[ $OSTYPE != (solaris*|linux-gnu) ||
- ( $OSTYPE = linux-gnu && $words[CURRENT-1] != -* ) ]]; then
+if (( CURRENT > 1 )) && [[ $OSTYPE != (aix*|solaris*|linux-gnu) ||
+ ( $OSTYPE = (aix*|linux-gnu) && $words[CURRENT-1] != -* ) ]]
+then
case $words[CURRENT-1] in
*k)
local sopt
@@ -215,6 +253,7 @@ if (( CURRENT > 1 )) && [[ $OSTYPE != (solaris*|linux-gnu) ||
_sequence -s , _ps_props $sopt - && return ;;
*g) [[ $OSTYPE = darwin* ]] && _wanted -C option-g-1 processes \
expl 'process ID' _sequence -s , _pids && return ;;
+ *D) _wanted directions expl direction compadd up down both && return ;;
*G) _sequence -s , _groups && return ;;
*J) _sequence _jails -0 && return ;;
*[MNW]) _files && return ;;
diff --git a/Completion/Unix/Command/_service b/Completion/Unix/Command/_service
index 28563429b..5f9ca0d67 100644
--- a/Completion/Unix/Command/_service
+++ b/Completion/Unix/Command/_service
@@ -11,14 +11,18 @@ zstyle -T ":completion:${ctx}" tag-order && \
case $OSTYPE in
freebsd<14->.*)
- args=( '-E+[set environment variable before executing the rc.d script]:variable:_parameters -g "*export*~*readonly*" -S=' )
+ args=(
+ '(-l -r)-d[enable debugging of rc.d scripts]'
+ '-E+[set environment variable before executing the rc.d script]:variable:_parameters -g "*export*~*readonly*" -S='
+ '(-l -r)-q[quiet]'
+ )
;&
freebsd<11->.*)
args+=( '-j+[perform actions in specified jail]:jail:_jails' )
;&
freebsd*|dragonfly*)
actions=(
- '(*)-r[show the results of boot time rcorder]'
+ '(* -q -d)-r[show the results of boot time rcorder]'
'(*)-R[restart all enabled local services]'
)
;&
@@ -28,7 +32,7 @@ case $OSTYPE in
'*::service argument:_init_d' \
+ '(actions)' $actions \
'(*)-e[show services that are enabled]' \
- '(*)-l[list all scripts in /etc/rc.d and the local startup directory]' \
+ '(* -q -d)-l[list all scripts in /etc/rc.d and the local startup directory]' \
':service name:_services'
;;
*)
diff --git a/Completion/Unix/Command/_timeout b/Completion/Unix/Command/_timeout
index f1961012d..676f8e8cd 100644
--- a/Completion/Unix/Command/_timeout
+++ b/Completion/Unix/Command/_timeout
@@ -11,9 +11,9 @@ local args
)
_arguments -S -A "-" $args \
- '--preserve-status[always exit with the same status as command even if it times out]' \
- "--foreground[don't propagate timeout to the command children]" \
+ '(-p --preserve-status)'{-p,--preserve-status}'[always exit with the same status as command even if it times out]' \
+ '(-f --foreground)'{-f,--foreground}"[don't propagate timeout to the command children]" \
'(-s --signal)'{-s,--signal}'[specify the signal to send on timeout]:signal:_signals' \
- '(-k --kill-after)'{-k,--kill-after}'[followup first signal with SIGKILL if command persists after specified time]:time' \
+ '(-k --kill-after)'{-k+,--kill-after=}'[followup first signal with SIGKILL if command persists after specified time]: :_numbers -f -u seconds duration \:s\:seconds m\:minutes h\:hours d\:days' \
'1: :_numbers -f -u seconds duration :s:seconds m:minutes h:hours d:days' \
'*:::command: _normal -p $service'
diff --git a/Completion/Unix/Command/_zdump b/Completion/Unix/Command/_zdump
index f96bdd764..9e71a5f53 100644
--- a/Completion/Unix/Command/_zdump
+++ b/Completion/Unix/Command/_zdump
@@ -1,6 +1,26 @@
#compdef zdump
-_arguments \
- '-v[lowest possible]' \
- '-c[cutoff]:cutoff year:' \
+local -a args
+
+case $OSTYPE in
+ aix*|(net|free)bsd*|linux*|solaris*)
+ args+=( '(-)--version[display version information]' )
+ ;|
+ aix*|(net|free)bsd*|linux*)
+ args+=( '(-)--help[display usage information]' )
+ ;|
+ (net|free)bsd*|linux*)
+ args+=( '-i[output a description of time intervals]' )
+ ;|
+ aix*|(free|net|open)bsd*|linux*)
+ args+=(
+ '(-c)-t[cut off interval output at the given times]:cut off (seconds since epoch)'
+ '(-v)-V[like -v, but omit times relative to the extreme time values]'
+ )
+ ;|
+esac
+
+_arguments -S $args \
+ '(-V)-v[print time at lowest possible time value]' \
+ '(-t)-c[cut off interval output at the given years]:cutoff years [-500,2500]' \
'*:time zone:_time_zone'
diff --git a/Completion/Unix/Command/_zfs b/Completion/Unix/Command/_zfs
index dd67ea767..3a884439b 100644
--- a/Completion/Unix/Command/_zfs
+++ b/Completion/Unix/Command/_zfs
@@ -69,6 +69,8 @@ rw_ds_props=(
'compression:value:($comp_algorithms)'
'copies:value:(1 2 3)'
'dedup:value:($dedup_algorithms)'
+ 'defaultuserquota:->quotas'
+ 'defaultgroupquota: :->quotas'
'devices:value:(on off)'
'encryption:value:(off on aes128-ccm aes-192-ccm aes-256-ccm aes-128-gcm aes-192-gcm aes-256-gcm)'
'exec:value:(on off)'
@@ -79,7 +81,7 @@ rw_ds_props=(
'paths:mountpoint:_directories -W / -P /'"
'multilevel:value:(on off)'
'nbmand:value:(on off)'
- {prefetch,primarycache}':value:(all none metadata)'
+ {prefetch,primarycache,secondarycache}':value:(all none metadata)'
'quota: :->quotas'
'readonly:value:(on off)'
'recordsize:value:(512 1K 2K 4K 8K 16K 32K 64K 128K 256K 512K 1M)'
@@ -89,7 +91,6 @@ rw_ds_props=(
'properties:property:(auto none)'"
'reservation: :->quotas'
'rstchown:value:(on off)'
- 'secondarycache:value:(all none metadata)'
'setuid:value:(on off)'
'shadow:value' # TODO: complete URI|none
'share:share properties'
@@ -128,9 +129,11 @@ case $service:$implementation in
'bcloneused[amount of storage used by cloned blocks]'
'dedup_table_size[size of dedup table on-disk]'
'dedupcached[size of dedup table in arc]'
+ 'encryptionroot'
'expandsize[uninitialized space within the pool]'
'fragmentation[amount of fragmentation in the pool]'
'freeing[amount of space remaining to be reclaimed]'
+ 'last_scrubbed_txg[transaction group (TXG) up to which the most recent scrub operated]'
'load_guid[unique identifier generated when pool is loaded]'
'used[amount of storage space used within the pool]'
)
@@ -150,8 +153,20 @@ case $service:$implementation in
rw_ds_props+=(
'aclmode:value:(discard groupmask passthrough restricted)'
'acltype:value:(off noacl nfsv4 posix posixacl)'
+ 'defaultprojectquota:->quotas'
+ 'defaultprojectobjquota:->quotas'
+ 'defaultgroupobjquota:->quotas'
+ 'defaultuserobjquota:->quotas'
+ 'dnodesize:value:(legacy auto 1k 2k 4k 8k 16k)'
+ 'direct:value:(disabled standard always)'
+ 'groupobjquota@'
'mlslabel:value:(none)' # TODO: list sensitivity labels
- 'redundant_metadata:value:(all most)'
+ 'overlay:value:(on off)'
+ 'projectquota@' 'projectobjquota@'
+ 'redundant_metadata:value:(all most some none)'
+ 'snapdev:value:(hidden visible)'
+ 'special_small_blocks:size [0]'
+ 'userobjquota@'
'vscan:value:(on off)'
'xattr:value:(on off dir sa)'
"filesystem_limit: :{if [[ -prefix [0-9]## ]]; then _message -e 'number'; elif [[ -prefix n ]]; then compadd none; else _message -e limits 'number or none'; fi}"
@@ -166,8 +181,8 @@ case $service:$implementation in
)
ro_ds_props+=(
createtxg clones filesystem_count guid logicalreferenced logicalused
- receive_resume_token refcompressratio snapshot_count snapshots_changed
- volblocksize written
+ objsetid receive_resume_token redact_snaps refcompressratio
+ snapshot_count snapshots_changed volblocksize written
)
delegatable_perms=(
bookmark load-key change-key userobjquota userobjused groupobjquota
@@ -240,8 +255,6 @@ case $service:$implementation in
"defaultwritelimit: : _alternative \
'sizes: :_guard \[0-9\]\#\(\|\[BKMGTPEZ\]\) size\ \(bytes\ per\ second\)' \
'properties:property:(none)'"
- 'defaultuserquota:->quotas'
- 'defaultgroupquota: :->quotas'
'keysource:value:->keysources'
)
ci_ds_props+=(
@@ -256,13 +269,13 @@ case $service:$implementation in
zfs:openzfs)
subcmds+=(
bookmark change-key load-key program project projectspace redact
- unload-key wait
+ rewrite unload-key wait version
)
;|
zpool:openzfs)
subcmds+=(
- checkpoint events labelclear initialize reopen resilver sync trim wait
- version
+ checkpoint events labelclear initialize reopen resilver sync prefetch
+ trim wait version
)
;|
zfs:solaris)
@@ -282,8 +295,9 @@ case $service:$implementation in
;;
zpool:*)
subcmds+=(
- add attach clear create destroy detach export get history import iostat
- list offline online reguid remove replace scrub set split status upgrade
+ add attach clear create destroy ddtprune detach export get history
+ import iostat list offline online reguid remove replace scrub set
+ split status upgrade
)
;;
zstream:*)
@@ -292,15 +306,18 @@ case $service:$implementation in
esac
case $OSTYPE in
- solaris*)
+ solaris*|linux-gnu)
rw_ds_props+=( 'zoned:value:(on off)' )
- ;;
+ ;|
freebsd*)
[[ $OSTYPE = freebsd<-12>.* ]] && subcmds+=( remap )
rw_ds_props+=( 'jailed:value:(on off)' )
;;
linux-gnu)
- rw_ds_props+=( 'relatime:value:(on off)' )
+ rw_ds_props+=(
+ 'relatime:value:(on off)'
+ 'volthreading:value:(on off)'
+ )
ci_ds_props+=(
{,fs,def,root}'context:SELinux context:_selinux_contexts -a file_type'
)
@@ -508,7 +525,11 @@ case $service:$words[1] in
if [[ $implementation = solaris ]]; then
args=( '-I+[specify dataset states to display instead of normal datasets]:dataset state:_sequence compadd - receiving resumable hidden all' )
else
- args=( '-p[use exact (parsable) numeric output]' )
+ args=(
+ '(-j --json)'{-j,--json}'[output in JSON format]'
+ '--json-int[output numbers in integer format instead of strings]'
+ '-p[use exact (parsable) numeric output]'
+ )
fi
_arguments -A "-*" -S $args \
'(-d)-r[recursively display children]' \
@@ -604,6 +625,17 @@ case $service:$words[1] in
'*:file:_files'
;;
+ zfs:rewrite)
+ _arguments -A "-*" -S -s \
+ '-P[rewrite physical blocks only so snapshots and incremental streams are unaffected]' \
+ '-l+[specify maximum number of bytes to write]:maximum (bytes)' \
+ '-o+[specify starting offset]:offset (bytes)' \
+ '-r[recurse into directories]' \
+ '-v[print names of all successfully rewritten files]' \
+ "-x[don't cross file system boundaries]" \
+ '*:file or directory:_files'
+ ;;
+
zfs:mount)
[[ $OSTYPE != freebsd* ]] && args=( '-O[overlay mount]' )
[[ $implementation = openzfs ]] && args+=(
@@ -611,6 +643,7 @@ case $service:$words[1] in
'(-a)-R[mount filesystems along with all their children]'
)
_arguments -A "-*" -S $args \
+ '(- :)'{-j,--json}'[show all mounted file systems in JSON format]' \
'-o+[specify temporary file system options]: :_values -s , "option" {,no}{atime,dev,exec,relatime,suid,xattr} ro rw' \
'-v[report mount progress]' \
'-f[force mount]' \
@@ -898,6 +931,11 @@ case $service:$words[1] in
':property:($delegatable_perms $ro_ds_props ${rw_ds_props%%:*})'
;;
+ (zfs|zpool):version)
+ _arguments -A "-*" -S \
+ '-j[output in JSON format]'
+ ;;
+
zpool:(clear|online))
[[ $OSTYPE = linux* ]] && args=(
"--power[power on the device's slot in the storage enclosure]"
@@ -991,6 +1029,13 @@ case $service:$words[1] in
'*: :->virtual-devices'
;;
+ zpool:ddtprune)
+ _arguments -A "-*" -S \
+ '(-p)-d[prune entries based on age]:age (days)' \
+ '(-d)-p[prune to target percentage of unique entries]:target (percentage)' \
+ ':pool:_zfs_pool'
+ ;;
+
zpool:destroy)
_arguments -A "-*" -S \
'-f[force active datasets to be unmounted]' \
@@ -1020,9 +1065,17 @@ case $service:$words[1] in
;;
zpool:get)
- [[ $implementation = solaris ]] && args=(
- '-s+[specify sources to display]: :_values -s , "source" local default none'
- )
+ if [[ $implementation = openzfs ]]; then
+ args=(
+ '(-j --json)'{-j,--json}'[output in JSON format]'
+ '--json-int[output numbers in integer format instead of strings]'
+ --json-pool-key-guid
+ )
+ else
+ args=(
+ '-s+[specify sources to display]: :_values -s , "source" local default none'
+ )
+ fi
_arguments -A "-*" -S $args \
'-H[suppress headers and tab-delimit fields]' \
'-p[display numbers in parseable (exact) values]' \
@@ -1076,6 +1129,7 @@ case $service:$words[1] in
zpool:initialize)
_arguments -A "-*" -S \
+ '(-a --all : *)'{-a,--all}'[begin, cancel, suspend initializing on all pools]' \
'(-s --suspend -c --cancel)'{-c,--cancel}'[cancel initializing on specified devices]' \
'(-s --suspend -c --cancel)'{-s,--suspend}'[suspend initializing on specified devices]' \
'(-u --uninit)'{-u,--uninit}'[clear initialization state on specified devices]' \
@@ -1130,6 +1184,9 @@ case $service:$words[1] in
zpool:list)
[[ $implementation = openzfs ]] && args=(
'-g[display vdev GUIDs instead of normal device names]'
+ '(-j --json)'{-j,--json}'[output in JSON format]'
+ '--json-int[output numbers in integer format instead of strings]'
+ --json-pool-key-guid
'-L[display real paths for vdevs resolving all symbolic links]'
'-p[display numbers in parsable (exact) values]'
'-P[display full paths for vdevs instead of only the last component of the path]'
@@ -1167,12 +1224,21 @@ case $service:$words[1] in
;;
zpool:online)
- _arguments -C -A "-*" -S $args \
+ _arguments -C -A "-*" -S \
'-e[expand device to use all available space]' \
':pool:_zfs_pool' \
'*:virtual device:->pool-devices'
;;
+ zpool:prefetch)
+ _arguments -A "-*" -S \
+ '-t+[metadata type]:metadata type:((
+ brt\:block\ reference\ table
+ ddt\:deduplication\ table
+ ))' \
+ ':pool:_zfs_pool'
+ ;;
+
zpool:reopen)
_arguments -A "-*" -S \
"-n[don't restart an in-progress scrub operation]" \
@@ -1180,7 +1246,9 @@ case $service:$words[1] in
;;
zpool:reguid)
- _zfs_pool
+ _arguments -A "-*" -S \
+ '-g+[set pool guid]:guid (64-bit decimal)' \
+ ':pool:_zfs_pool'
;;
zpool:remove)
@@ -1215,6 +1283,10 @@ case $service:$words[1] in
zpool:scrub)
[[ $implementation = openzfs ]] && args=(
+ '(-a --all *)'{-a,--all}'[begin, pause, stop scrub on all pools]'
+ '-C[continue scrub from last saved txg]'
+ '-S+[specify start date for transactions]:date (YYYY-MM-DD HH\:MM):_dates'
+ '-E+[specify end date for transactions]:date (YYYY-MM-DD HH\:MM):_dates'
'(-s)-p[pause scrubbing]'
'-w[wait until scrub has completed before returning]'
'-e[only scrub files with known data errors]'
@@ -1259,6 +1331,9 @@ case $service:$words[1] in
'-c+[run scripts on each vdev]:script:_sequence _files -W "($ZPOOL_SCRIPTS_PATH /etc/zfs/zpool.d ~/.zpool.d)"'
'-e[only show unhealthy vdevs]'
'-i[display vdev initialization status]'
+ '(-j --json)'{-j,--json}'[output in JSON format]'
+ '--json-int[output numbers in integer format instead of strings]'
+ --json-flat-vdevs --json-pool-key-guid
'-g[display vdev GUIDs instead of the normal device names]'
'-L[display real paths for vdevs resolving all symbolic links]'
'-p[display numbers in parsable (exact) values and times in nanoseconds]'
@@ -1280,6 +1355,7 @@ case $service:$words[1] in
zpool:trim)
_arguments -C -A "-*" -S \
+ '(-a --all 1 *)'{-a,--all}'[perform TRIM on all pools]' \
'(-d --secure)'{-d,--secure}'[initiate a secure TRIM]' \
'(-r --rate)'{-r,--rate}'[set rate at which the TRIM operation progresses]:rate (bytes per second)' \
'(-c --cancel)'{-c,--cancel}'[cancel trimming]' \