bash-completion: journalctl query by binary and device
The approach taken is different between the two: - since there are many files in /usr, but messages appear only for a tiny subset, the completion is performed only for stuff shown by journalctl -F _EXE. This makes sense because the list is already in proper form. - since it is hard to convert _KERNEL_DEVICE to device file name, simply all files in /dev/ are used as possible completions. Unfortunately zsh completion requires more work and is not covered by this commit.
This commit is contained in:
parent
3679d1126b
commit
1883552c3d
|
@ -334,6 +334,20 @@ _journalctl() {
|
|||
elif [[ $cur = *=* ]]; then
|
||||
mapfile -t field_vals < <(journalctl -F "${prev%=}" 2>/dev/null)
|
||||
COMPREPLY=( $(compgen -W '${field_vals[*]}' -- "${cur#=}") )
|
||||
elif [[ $cur = /dev* ]]; then
|
||||
compopt -o filenames
|
||||
COMPREPLY=( $(compgen -f -- "${cur}") )
|
||||
elif [[ $cur = /* ]]; then
|
||||
# Append /dev/ to the list of completions, so that
|
||||
# after typing /<TAB><TAB> the user sees /dev/ as one
|
||||
# of the alternatives. Later on the rule above will
|
||||
# take care of showing device files in /dev/.
|
||||
mapfile -t field_vals < <(journalctl -F "_EXE" 2>/dev/null; echo '/dev/')
|
||||
COMPREPLY=( $(compgen -W '${field_vals[*]}' -- "${cur}") )
|
||||
if [[ "${COMPREPLY[@]}" = '/dev/' ]]; then
|
||||
compopt -o filenames
|
||||
COMPREPLY=( $(compgen -f -- "${cur}") )
|
||||
fi
|
||||
elif [[ $prev = '=' ]]; then
|
||||
mapfile -t field_vals < <(journalctl -F "${COMP_WORDS[COMP_CWORD-2]}" 2>/dev/null)
|
||||
COMPREPLY=( $(compgen -W '${field_vals[*]}' -- "$cur") )
|
||||
|
|
Loading…
Reference in New Issue