[已解决]update-initramfs的补全代码看不懂

最大的社区版本,Ubuntu的发源地
回复
科学之子
帖子: 2284
注册时间: 2013-05-26 6:58
系统: Debian 9

[已解决]update-initramfs的补全代码看不懂

#1

帖子 科学之子 » 2017-04-15 16:37

update-initramfs的补全代码看不懂
意思是说补全结果是从update-initramfs -h 2>&1提取出来的?但怎么看不到?

代码: 全选

# update-initramfs(8) completion

_update_initramfs()
{
	local cur prev valid_options

	# TODO: this can be "_get_comp_words_by_ref cur prev" once
	# bash-completion >= 1.2 is available, see #537139
	cur=$(_get_cword)
	prev=${COMP_WORDS[COMP_CWORD-1]}

	# The only option that takes an argument is -k
	if [[ "$prev" == '-k' ]]; then
		# Complete with kernel versions
		_kernel_versions
		COMPREPLY=( $( compgen -W '${COMPREPLY[@]} all' -- "$cur" ) )
		return;
	fi

	# Complete with available options (obtained from -h)
	valid_options=$( update-initramfs -h 2>&1 | \
		sed -e '/^ -/!d;s/^ \(-\w\+\).*/\1/' )
	COMPREPLY=( $( compgen -W "$valid_options" -- $cur ) )
}

complete -F _update_initramfs update-initramfs
科学之子
帖子: 2284
注册时间: 2013-05-26 6:58
系统: Debian 9

Re: [已解决]update-initramfs的补全代码看不懂

#2

帖子 科学之子 » 2017-04-22 18:04

仔细看了看:
是这段进行的补全:

代码: 全选

[code]	# The only option that takes an argument is -k
	if [[ "$prev" == '-k' ]]; then
		# Complete with kernel versions
		_kernel_versions
		COMPREPLY=( $( compgen -W '${COMPREPLY[@]} all' -- "$cur" ) )
		return;
	fi
[/code]

在bash终端里输入 type _kernel_versions是个函数(是内建函数?)
就是这个函数获取的可用内核版本
回复