Я столкнулся с этим вопросом, когда пытался сделать то же самое, но не хотел оставлять что-либо на экране и устанавливать переменную, поэтому я поместил следующее в сценарий оболочки, который я исходил:
function test_unicode {
echo -ne "\xe2\x88\xb4\033[6n\033[1K\r"
read -d R foo
echo -ne "\033[1K\r"
echo -e "${foo}" | cut -d \[ -f 2 | cut -d";" -f 2 | (
read UNICODE
[ $UNICODE -eq 2 ] && return 0
[ $UNICODE -ne 2 ] && return 1
)
}
test_unicode
RC=$?
export UNICODE_SUPPORT=`[ $RC -eq 0 ] && echo "Y" || echo "N"`
unset test_unicode
Спасибо @ steeldriver , который указал на libedit . Так что нужно было просто добавить USE-флаг libedit
для portage. Я добавил его локально вот так:
# /etc/portage/package.use
>=net-misc/openssh-7.7_p1-r9 libedit
А затем пересобрал OpenSSH:
$ emerge -av net-misc/openssh
Кроме того , для этого требуется, чтобы bash-completion
уже был установлен и включен для sftp
.
Установить завершение bash:
$ sudo emerge --ask app-shells/bash-completion
Вы можете проверить, включено ли завершение bash -для sftp, например:
$ eselect bashcomp list | grep ftp
Что должно возвращать что-то вроде:
[337] lftp *
[338] lftpget *
[451] ncftp *
[633] sftp *
Звездочка в конце подтверждает, что завершение bash -включено для sftp, (и в этом случае некоторые другие утилиты ftp также ).