From 559888c873a196c790137bbeee678dc5212c4430 Mon Sep 17 00:00:00 2001 From: Kevin Locke Date: Thu, 19 Sep 2019 07:27:31 -0600 Subject: [PATCH] bash-completion: Standardize fsck/mkfs file/device Some of the fsck and mkfs commands complete differently than the others, and differently than the desired behavior.[1] Standardize on completing with $(lsblk -pnro name): * fsck: Don't complete completes on all block devices and device links under /dev immediately (which is excessive and prone to search problems). * mkfs, mkfs.bfs: Don't complete "/path/to/file" literally. I assume this was copy/pasted from example code, since it does not appear to be a valid argument unless it is a valid path, which is rare. * fsck.cramfs, mkfs, mkfs.bfs, mkfs.cramfs, mkswap: Don't complete on all filenames initially. The desired behavior is to complete filenames only if there are no canonical matches.[1] Note: A subsequent commit will add the desired fallback behavior. [1]: https://github.com/karelzak/util-linux/issues/842#issuecomment-523450243 Signed-off-by: Kevin Locke --- bash-completion/fsck | 3 +-- bash-completion/fsck.cramfs | 4 +--- bash-completion/mkfs | 2 +- bash-completion/mkfs.bfs | 2 +- bash-completion/mkfs.cramfs | 4 +--- bash-completion/mkswap | 4 +--- 6 files changed, 6 insertions(+), 13 deletions(-) diff --git a/bash-completion/fsck b/bash-completion/fsck index e5b4f53b4..301bb5d00 100644 --- a/bash-completion/fsck +++ b/bash-completion/fsck @@ -32,8 +32,7 @@ _fsck_module() return 0 ;; esac - COMPREPLY=( $(compgen -W "$(find -L /dev/ -path /dev/fd -prune \ - -o -type b -print 2>/dev/null)" -- $cur) ) + COMPREPLY=( $(compgen -W "$(lsblk -pnro name)" -- $cur) ) return 0 } complete -F _fsck_module fsck diff --git a/bash-completion/fsck.cramfs b/bash-completion/fsck.cramfs index d17d2fea7..c92a6bd46 100644 --- a/bash-completion/fsck.cramfs +++ b/bash-completion/fsck.cramfs @@ -25,9 +25,7 @@ _fsck.cramfs_module() return 0 ;; esac - local IFS=$'\n' - compopt -o filenames - COMPREPLY=( $(compgen -f -- $cur) ) + COMPREPLY=( $(compgen -W "$(lsblk -pnro name)" -- $cur) ) return 0 } complete -F _fsck.cramfs_module fsck.cramfs diff --git a/bash-completion/mkfs b/bash-completion/mkfs index a27874714..173f7e58b 100644 --- a/bash-completion/mkfs +++ b/bash-completion/mkfs @@ -21,7 +21,7 @@ _mkfs_module() return 0 ;; esac - COMPREPLY=( $(compgen -W "$(lsblk -pnro name) /path/to/file" -- $cur) ) + COMPREPLY=( $(compgen -W "$(lsblk -pnro name)" -- $cur) ) return 0 } complete -F _mkfs_module mkfs diff --git a/bash-completion/mkfs.bfs b/bash-completion/mkfs.bfs index 75458bb09..1faeb446b 100644 --- a/bash-completion/mkfs.bfs +++ b/bash-completion/mkfs.bfs @@ -24,7 +24,7 @@ _mkfs.bfs_module() return 0 ;; esac - COMPREPLY=( $(compgen -W "$(lsblk -pnro name) /path/to/file" -- $cur) ) + COMPREPLY=( $(compgen -W "$(lsblk -pnro name)" -- $cur) ) return 0 } complete -F _mkfs.bfs_module mkfs.bfs diff --git a/bash-completion/mkfs.cramfs b/bash-completion/mkfs.cramfs index af74e1212..23e1d66f8 100644 --- a/bash-completion/mkfs.cramfs +++ b/bash-completion/mkfs.cramfs @@ -36,9 +36,7 @@ _mkfs.cramfs_module() return 0 ;; esac - local IFS=$'\n' - compopt -o filenames - COMPREPLY=( $(compgen -f -- $cur) ) + COMPREPLY=( $(compgen -W "$(lsblk -pnro name)" -- $cur) ) return 0 } complete -F _mkfs.cramfs_module mkfs.cramfs diff --git a/bash-completion/mkswap b/bash-completion/mkswap index 6ccc21421..ad8b51e66 100644 --- a/bash-completion/mkswap +++ b/bash-completion/mkswap @@ -32,9 +32,7 @@ _mkswap_module() return 0 ;; esac - local IFS=$'\n' - compopt -o filenames - COMPREPLY=( $(compgen -f -- $cur) ) + COMPREPLY=( $(compgen -W "$(lsblk -pnro name)" -- $cur) ) return 0 } complete -F _mkswap_module mkswap