__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,14 +53,14 @@ function __fish_print_hostnames -d "Print a list of known hostnames"
set -l orig_dir $PWD
set -l paths
for config in $argv
set -a paths (cat $config ^/dev/null \
# Keep only Include lines
| string match -r -i '^\s*Include\s+.+' \
# Remove Include syntax
| string replace -r -i '^\s*Include\s+' '' \
if test -r "$config"
set paths $paths (
# Keep only Include lines and remove Include syntax
string replace -rfi '^\s*Include\s+' '' <$config \
# Normalize whitespace
| string trim | string replace -r -a '\s+' ' ')
end
end
builtin cd $relative_path
set -l new_paths
@ -89,9 +89,9 @@ function __fish_print_hostnames -d "Print a list of known hostnames"
for file in $ssh_configs
if test -r $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.
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
for file in $known_hosts