# # Bash completion for grub # # Copyright (C) 2010 Free Software Foundation, Inc. # # GRUB is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # GRUB is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GRUB. If not, see <http://www.gnu.org/licenses/>. # bash completion for grub __grub_dir() { local i c=1 boot_dir for (( c=1; c <= ${#COMP_WORDS[@]}; c++ )); do i="${COMP_WORDS[c]}" case "$i" in --boot-directory) c=$((++c)) i="${COMP_WORDS[c]}" boot_dir="${i##*=}"; break ;; esac done boot_dir=${boot_dir-/boot} echo "${boot_dir%/}/grub2" } # This function generates completion reply with compgen # - arg: accepts 1, 2, 3, or 4 arguments # $1 wordlist separate by space, tab or newline # $2 (optional) prefix to add # $3 (optional) current word to complete # $4 (optional) suffix to add __grubcomp () { local cur="${COMP_WORDS[COMP_CWORD]}" if [ $# -gt 2 ]; then cur="$3" fi case "$cur" in --*=) COMPREPLY=() ;; *) local IFS=' '$'\t'$'\n' COMPREPLY=($(compgen -P "${2-}" -W "${1-}" -S "${4-}" -- "$cur")) ;; esac } # Function that return long options from the help of the command # - arg: $1 (optional) command to get the long options from __grub_get_options_from_help () { local prog if [ $# -ge 1 ]; then prog="$1" else prog="${COMP_WORDS[0]}" fi local i IFS=" "$'\t'$'\n' for i in $(LC_ALL=C $prog --help) do case $i in --*) echo "${i%=*}";; esac done } # Function that return long options from the usage of the command # - arg: $1 (optional) command to get the long options from __grub_get_options_from_usage () { local prog if [ $# -ge 1 ]; then prog="$1" else prog="${COMP_WORDS[0]}" fi local i IFS=" "$'\t'$'\n' for i in $(LC_ALL=C $prog --usage) do case $i in \[--*\]) i=${i#[} # Remove leading [ echo ${i%%?(=*)]} # Remove optional value and trailing ] ;; esac done } __grub_get_last_option () { local i for (( i=$COMP_CWORD-1; i > 0; i-- )); do if [[ "${COMP_WORDS[i]}" == -* ]]; then echo "${COMP_WORDS[i]}" break; fi done } __grub_list_menuentries () { local cur="${COMP_WORDS[COMP_CWORD]}" local config_file=$(__grub_dir)/grub.cfg if [ -f "$config_file" ];then local IFS=$'\n' COMPREPLY=( $(compgen \ -W "$( awk -F "[\"']" '/menuentry/ { print $2 }' $config_file )" \ -- "$cur" )) #'# Help emacs syntax highlighting fi } __grub_list_modules () { local grub_dir=$(__grub_dir) local IFS=$'\n' COMPREPLY=( $( compgen -f -X '!*/*.mod' -- "${grub_dir}/$cur" | { while read -r tmp; do [ -n $tmp ] && { tmp=${tmp##*/} printf '%s\n' ${tmp%.mod} } done } )) } # # grub-set-default & grub-reboot # _grub_set_entry () { local cur prev split=false COMPREPLY=() cur=`_get_cword` prev=${COMP_WORDS[COMP_CWORD-1]} _split_longopt && split=true case "$prev" in --boot-directory) _filedir -d return ;; esac $split && return 0 if [[ "$cur" == -* ]]; then __grubcomp "$(__grub_get_options_from_help)" else # Default complete with a menuentry __grub_list_menuentries fi } __grub_set_default_program="grub2-set-default" have ${__grub_set_default_program} && \ complete -F _grub_set_entry -o filenames ${__grub_set_default_program} unset __grub_set_default_program __grub_reboot_program="grub2-reboot" have ${__grub_reboot_program} && \ complete -F _grub_set_entry -o filenames ${__grub_reboot_program} unset __grub_reboot_program # # grub-editenv # _grub_editenv () { local cur prev COMPREPLY=() cur=`_get_cword` prev=${COMP_WORDS[COMP_CWORD-1]} case "$prev" in create|list|set|unset) COMPREPLY=( "" ) return ;; esac __grubcomp "$(__grub_get_options_from_help) create list set unset" } __grub_editenv_program="grub2-editenv" have ${__grub_editenv_program} && \ complete -F _grub_editenv -o filenames ${__grub_editenv_program} unset __grub_editenv_program # # grub-mkconfig # _grub_mkconfig () { local cur prev COMPREPLY=() cur=`_get_cword` if [[ "$cur" == -* ]]; then __grubcomp "$(__grub_get_options_from_help)" else _filedir fi } __grub_mkconfig_program="grub2-mkconfig" have ${__grub_mkconfig_program} && \ complete -F _grub_mkconfig -o filenames ${__grub_mkconfig_program} unset __grub_mkconfig_program # # grub-setup # _grub_setup () { local cur prev split=false COMPREPLY=() cur=`_get_cword` prev=${COMP_WORDS[COMP_CWORD-1]} _split_longopt && split=true case "$prev" in -d|--directory) _filedir -d return ;; esac $split && return 0 if [[ "$cur" == -* ]]; then __grubcomp "$(__grub_get_options_from_help)" else # Default complete with a filename _filedir fi } __grub_bios_setup_program="grub2-bios-setup" have ${__grub_bios_setup_program} && \ complete -F _grub_setup -o filenames ${__grub_bios_setup_program} unset __grub_bios_setup_program __grub_sparc64_setup_program="grub2-sparc64-setup" have ${__grub_sparc64_setup_program} && \ complete -F _grub_setup -o filenames ${__grub_sparc64_setup_program} unset __grub_sparc64_setup_program # # grub-get-kernel-settings # _grub_get_kernel_settings () { local cur COMPREPLY=() cur=`_get_cword` if [[ "$cur" == -* ]]; then __grubcomp "$(__grub_get_options_from_help)" else # Default complete with a filename _filedir fi } __grub_get_kernel_settings_program="grub2-get-kernel-settings" have ${__grub_get_kernel_settings_program} && \ complete -F _grub_get_kernel_settings -o filenames ${__grub_get_kernel_settings_program} unset __grub_get_kernel_settings_program # # grub-install # _grub_install () { local cur prev last split=false COMPREPLY=() cur=`_get_cword` prev=${COMP_WORDS[COMP_CWORD-1]} last=$(__grub_get_last_option) _split_longopt && split=true case "$prev" in --boot-directory) _filedir -d return ;; --disk-module) __grubcomp "biosdisk ata" return ;; esac $split && return 0 if [[ "$cur" == -* ]]; then __grubcomp "$(__grub_get_options_from_help)" else case "$last" in --modules) __grub_list_modules return ;; esac # Default complete with a filename _filedir fi } __grub_install_program="grub2-install" have ${__grub_install_program} && \ complete -F _grub_install -o filenames ${__grub_install_program} unset __grub_install_program # # grub-mkfont # _grub_mkfont () { local cur COMPREPLY=() cur=`_get_cword` if [[ "$cur" == -* ]]; then __grubcomp "$(__grub_get_options_from_help)" else # Default complete with a filename _filedir fi } __grub_mkfont_program="grub2-mkfont" have ${__grub_mkfont_program} && \ complete -F _grub_mkfont -o filenames ${__grub_mkfont_program} unset __grub_mkfont_program # # grub-mkrescue # _grub_mkrescue () { local cur prev last COMPREPLY=() cur=`_get_cword` prev=${COMP_WORDS[COMP_CWORD-1]} last=$(__grub_get_last_option) if [[ "$cur" == -* ]]; then __grubcomp "$(__grub_get_options_from_help)" else case "$last" in --modules) __grub_list_modules return ;; esac # Default complete with a filename _filedir fi } __grub_mkrescue_program="grub2-mkrescue" have ${__grub_mkrescue_program} && \ complete -F _grub_mkrescue -o filenames ${__grub_mkrescue_program} unset __grub_mkrescue_program # # grub-mkimage # _grub_mkimage () { local cur prev split=false COMPREPLY=() cur=`_get_cword` prev=${COMP_WORDS[COMP_CWORD-1]} _split_longopt && split=true case "$prev" in -d|--directory|-p|--prefix) _filedir -d return ;; -O|--format) # Get available format from help local prog=${COMP_WORDS[0]} __grubcomp "$(LC_ALL=C $prog --help | \ awk -F ":" '/available formats/ { print $2 }' | \ sed 's/, / /g')" return ;; esac $split && return 0 if [[ "$cur" == -* ]]; then __grubcomp "$(__grub_get_options_from_help)" else # Default complete with a filename _filedir fi } __grub_mkimage_program="grub2-mkimage" have ${__grub_mkimage_program} && \ complete -F _grub_mkimage -o filenames ${__grub_mkimage_program} unset __grub_mkimage_program # # grub-mkpasswd-pbkdf2 # _grub_mkpasswd_pbkdf2 () { local cur COMPREPLY=() cur=`_get_cword` if [[ "$cur" == -* ]]; then __grubcomp "$(__grub_get_options_from_help)" else # Default complete with a filename _filedir fi } __grub_mkpasswd_pbkdf2_program="grub2-mkpasswd-pbkdf2" have ${__grub_mkpasswd_pbkdf2_program} && \ complete -F _grub_mkpasswd_pbkdf2 -o filenames ${__grub_mkpasswd_pbkdf2_program} unset __grub_mkpasswd_pbkdf2_program # # grub-probe # _grub_probe () { local cur prev split=false COMPREPLY=() cur=`_get_cword` prev=${COMP_WORDS[COMP_CWORD-1]} _split_longopt && split=true case "$prev" in -t|--target) # Get target type from help local prog=${COMP_WORDS[0]} __grubcomp "$(LC_ALL=C $prog --help | \ awk -F "[()]" '/--target=/ { print $2 }' | \ sed 's/|/ /g')" return ;; esac $split && return 0 if [[ "$cur" == -* ]]; then __grubcomp "$(__grub_get_options_from_help)" else # Default complete with a filename _filedir fi } __grub_probe_program="grub2-probe" have ${__grub_probe_program} && \ complete -F _grub_probe -o filenames ${__grub_probe_program} unset __grub_probe_program # # grub-script-check # _grub_script_check () { local cur COMPREPLY=() cur=`_get_cword` if [[ "$cur" == -* ]]; then __grubcomp "$(__grub_get_options_from_help)" else # Default complete with a filename _filedir fi } __grub_script_check_program="grub2-script-check" have ${__grub_script_check_program} && \ complete -F _grub_script_check -o filenames ${__grub_script_check_program} # Local variables: # mode: shell-script # sh-basic-offset: 4 # sh-indent-comment: t # indent-tabs-mode: nil # End: # ex: ts=4 sw=4 et filetype=sh
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
addpart | File | 520 B | 0644 |
|
blkdiscard | File | 651 B | 0644 |
|
blkid | File | 1.47 KB | 0644 |
|
blockdev | File | 761 B | 0644 |
|
bootctl | File | 1.79 KB | 0644 |
|
busctl | File | 7.54 KB | 0644 |
|
cal | File | 404 B | 0644 |
|
cfdisk | File | 736 B | 0644 |
|
chcpu | File | 1.18 KB | 0644 |
|
chfn | File | 445 B | 0644 |
|
chrt | File | 800 B | 0644 |
|
chsh | File | 506 B | 0644 |
|
col | File | 460 B | 0644 |
|
colcrt | File | 484 B | 0644 |
|
colrm | File | 509 B | 0644 |
|
column | File | 725 B | 0644 |
|
coredumpctl | File | 3.34 KB | 0644 |
|
ctrlaltdel | File | 335 B | 0644 |
|
delpart | File | 649 B | 0644 |
|
dmesg | File | 1.03 KB | 0644 |
|
dracut | File | 3.5 KB | 0644 |
|
eject | File | 1.16 KB | 0644 |
|
fallocate | File | 593 B | 0644 |
|
fdformat | File | 414 B | 0644 |
|
fdisk | File | 1.05 KB | 0644 |
|
findmnt | File | 2.77 KB | 0644 |
|
firewall-cmd | File | 10.1 KB | 0644 |
|
flock | File | 860 B | 0644 |
|
fsck | File | 789 B | 0644 |
|
fsck.cramfs | File | 508 B | 0644 |
|
fsck.minix | File | 403 B | 0644 |
|
fsfreeze | File | 524 B | 0644 |
|
fstrim | File | 626 B | 0644 |
|
gapplication | File | 1.36 KB | 0644 |
|
gdbus | File | 935 B | 0644 |
|
getopt | File | 815 B | 0644 |
|
grub | File | 11.41 KB | 0644 |
|
gsettings | File | 2.76 KB | 0644 |
|
hexdump | File | 659 B | 0644 |
|
hostnamectl | File | 2.16 KB | 0644 |
|
hwclock | File | 937 B | 0644 |
|
ionice | File | 837 B | 0644 |
|
ipcrm | File | 1.39 KB | 0644 |
|
ipcs | File | 514 B | 0644 |
|
isosize | File | 426 B | 0644 |
|
journalctl | File | 5.4 KB | 0644 |
|
kernel-install | File | 1.75 KB | 0644 |
|
kmod | File | 3.16 KB | 0644 |
|
ldattach | File | 1.23 KB | 0644 |
|
localectl | File | 3.36 KB | 0644 |
|
logger | File | 1.13 KB | 0644 |
|
loginctl | File | 4.03 KB | 0644 |
|
look | File | 572 B | 0644 |
|
losetup | File | 1.47 KB | 0644 |
|
lsblk | File | 1.44 KB | 0644 |
|
lscpu | File | 829 B | 0644 |
|
lsinitrd | File | 2.05 KB | 0644 |
|
lslocks | File | 1002 B | 0644 |
|
machinectl | File | 3.12 KB | 0644 |
|
mcookie | File | 502 B | 0644 |
|
mkfs | File | 692 B | 0644 |
|
mkfs.cramfs | File | 821 B | 0644 |
|
mkfs.minix | File | 716 B | 0644 |
|
mkswap | File | 765 B | 0644 |
|
more | File | 528 B | 0644 |
|
mountpoint | File | 570 B | 0644 |
|
namei | File | 500 B | 0644 |
|
nmcli | File | 3.74 KB | 0644 |
|
nsenter | File | 955 B | 0644 |
|
partx | File | 1.07 KB | 0644 |
|
pivot_root | File | 387 B | 0644 |
|
prlimit | File | 1.16 KB | 0644 |
|
raw | File | 482 B | 0644 |
|
readprofile | File | 679 B | 0644 |
|
rename | File | 632 B | 0644 |
|
renice | File | 812 B | 0644 |
|
resizepart | File | 691 B | 0644 |
|
rev | File | 432 B | 0644 |
|
rpm | File | 9.77 KB | 0644 |
|
rtcwake | File | 841 B | 0644 |
|
runuser | File | 864 B | 0644 |
|
script | File | 667 B | 0644 |
|
scriptreplay | File | 592 B | 0644 |
|
semanage | File | 6.42 KB | 0644 |
|
setarch | File | 775 B | 0644 |
|
setpriv | File | 1.97 KB | 0644 |
|
setsebool | File | 1.77 KB | 0644 |
|
setsid | File | 433 B | 0644 |
|
setterm | File | 2.24 KB | 0644 |
|
sfdisk | File | 1.41 KB | 0644 |
|
su | File | 864 B | 0644 |
|
swaplabel | File | 635 B | 0644 |
|
swapon | File | 1.32 KB | 0644 |
|
systemctl | File | 12.29 KB | 0644 |
|
systemd-analyze | File | 3.9 KB | 0644 |
|
systemd-cat | File | 1.87 KB | 0644 |
|
systemd-cgls | File | 1.75 KB | 0644 |
|
systemd-cgtop | File | 1.32 KB | 0644 |
|
systemd-delta | File | 1.91 KB | 0644 |
|
systemd-detect-virt | File | 1.29 KB | 0644 |
|
systemd-nspawn | File | 5.74 KB | 0644 |
|
systemd-run | File | 3.51 KB | 0644 |
|
tailf | File | 530 B | 0644 |
|
taskset | File | 1.06 KB | 0644 |
|
tc | File | 26.41 KB | 0644 |
|
timedatectl | File | 2.52 KB | 0644 |
|
tuned-adm | File | 511 B | 0644 |
|
udevadm | File | 3.64 KB | 0644 |
|
ul | File | 655 B | 0644 |
|
unshare | File | 496 B | 0644 |
|
utmpdump | File | 466 B | 0644 |
|
uuidgen | File | 384 B | 0644 |
|
wdctl | File | 1.17 KB | 0644 |
|
whereis | File | 535 B | 0644 |
|
wipefs | File | 760 B | 0644 |
|
write | File | 494 B | 0644 |
|
yum | File | 11.23 KB | 0644 |
|
yummain.py | File | 11.23 KB | 0644 |
|
zramctl | File | 1.18 KB | 0644 |
|