- redirect stderr to /dev/null when performing remote path completion for

scp
- factor out the scp ls completion code into its own function, as we need to
  call this once remotely and once locally
This commit is contained in:
ianmacd 2002-10-20 20:11:21 +00:00
parent 9ae4341c37
commit 0026a9cb0b

View File

@ -1,6 +1,6 @@
# bash_completion - some programmable completion functions for bash 2.05b # bash_completion - some programmable completion functions for bash 2.05b
# #
# $Id: bash_completion,v 1.450 2002/10/20 06:56:41 ianmacd Exp $ # $Id: bash_completion,v 1.451 2002/10/20 22:11:21 ianmacd Exp $
# #
# Copyright (C) Ian Macdonald <ian@caliban.org> # Copyright (C) Ian Macdonald <ian@caliban.org>
# #
@ -1918,6 +1918,14 @@ _ssh()
} }
shopt -u hostcomplete && complete -F _ssh ssh slogin sftp shopt -u hostcomplete && complete -F _ssh ssh slogin sftp
_scp_filedir()
{
# do not indent last line of this function
ls -aF1d "$path*" 2>/dev/null | sed -e 's/ /\\\\\\\ /g' \
-e 's/[*@|=]$//g' -e 's/[^\/]$/& /g' -e 's/\
//g'
}
# scp(1) completion # scp(1) completion
# #
_scp() _scp()
@ -1944,16 +1952,12 @@ _scp()
# escape spaces; remove executables, aliases, pipes and sockets; # escape spaces; remove executables, aliases, pipes and sockets;
# add space at end of file names; change newlines into spaces # add space at end of file names; change newlines into spaces
COMPREPLY=( $( ssh -o 'Batchmode yes' $userhost \ COMPREPLY=( $( ssh -o 'Batchmode yes' $userhost \
ls -aF1d "$path*" | sed -e 's/ /\\\\\\\ /g' \ $(declare -f _scp_filedir | sed -e '1,2d; 5d')))
-e 's/[*@|=]$//g' -e 's/[^\/]$/& /g' \
-e 's/\
//g' ) )
return 0 return 0
fi fi
[[ "$cur" == */* ]] || _known_hosts -c -a [[ "$cur" == */* ]] || _known_hosts -c -a
_filedir COMPREPLY=( ${COMPREPLY[@]} $( _scp_filedir ) )
return 0 return 0
} }