__fish_print_hostnames: Use string replace -f

Saves one `string match` invocation.

Also removes a useless-use-of-cat.

(cherry picked from commit 4437e8d8d6)
This commit is contained in:
Fabian Homborg 2017-09-05 16:29:57 +02:00
parent 6145b4a770
commit b00daebec2

View file

@ -53,13 +53,13 @@ function __fish_print_hostnames -d "Print a list of known hostnames"
set -l orig_dir $PWD set -l orig_dir $PWD
set -l paths set -l paths
for config in $argv for config in $argv
set -a paths (cat $config ^/dev/null \ if test -r "$config"
# Keep only Include lines set paths $paths (
| string match -r -i '^\s*Include\s+.+' \ # Keep only Include lines and remove Include syntax
# Remove Include syntax string replace -rfi '^\s*Include\s+' '' <$config \
| string replace -r -i '^\s*Include\s+' '' \ # Normalize whitespace
# Normalize whitespace | string trim | string replace -r -a '\s+' ' ')
| string trim | string replace -r -a '\s+' ' ') end
end end
builtin cd $relative_path builtin cd $relative_path
@ -89,9 +89,9 @@ function __fish_print_hostnames -d "Print a list of known hostnames"
for file in $ssh_configs for file in $ssh_configs
if test -r $file if test -r $file
# Print hosts from system wide ssh configuration file # Print hosts from system wide ssh configuration file
string match -r -i '^\s*Host\s+\S+' <$file | string replace -r -i '^\s*Host\s+' '' | string trim | string replace -r '\s+' ' ' | string split ' ' | string match -v '*\**' string replace -rfi '^\s*Host\s+' '' <$file | string trim | string replace -r '\s+' ' ' | string split ' ' | string match -v '*\**'
# Extract known_host paths. # Extract known_host paths.
set -a known_hosts (string match -ri '^\s*UserKnownHostsFile|^\s*GlobalKnownHostsFile' <$file | string replace -ri '.*KnownHostsFile\s*' '') set known_hosts $known_hosts (string replace -rfi '.*KnownHostsFile\s*' '' <$file)
end end
end end
for file in $known_hosts for file in $known_hosts