К сожалению, это невозможно. Некоторые приложения, в более новых версиях которых введены новые необязательные синтаксисы, прибегают к комментариям «условной компиляции», ярким примером является MySQL.
Но, к счастью, OpenSSH еще не на этом этапе.
Возможное решение: если весь ваш домашний каталог смонтирован в разных операционных системах, вы можете добавить скрипт в свой .profile, который проверяет версию SSH и, если этого недостаточно для загрузки вашего файла конфигурации, псевдонимы ssh
в ssh -F / dev / null
. Например:
if [ "$(bc -l <<<"$(ssh -V 2> >(sed 's,^[^0-9]*,,;s,[^\.0-9].*,,')) < 6.5")" == 1 ]
then
alias ssh="/usr/bin/ssh -F/dev/null"
fi
В качестве альтернативы, согласно комментарию @derobert, псевдонима может быть недостаточно для некоторых случаев использования, таких как использование rsync
или других приложений, которые используют OpenSSH в качестве транспорта и вызывают ssh
напрямую (не позволяя оболочке разрешить псевдоним). Если это действительно проблема, вы можете создать сценарий с именем ssh
в вашем локальном каталоге bin (обычно ~ / bin
или ~ / .local / bin
). Когда приложение разрешает путь к двоичному файлу ssh
, оно должно увидеть ваш локальный каталог bin в начале пути и запустить ваш сценарий, который затем выполнит требуемую логику.
Может быть, что-то вроде этого:
#!/bin/bash
if [ "$(bc -l <<<"$(ssh -V 2> >(sed 's,^[^0-9]*,,;s,[^\.0-9].*,,')) < 6.5")" == 1 ]
then
/usr/bin/ssh -F/dev/null "$@"
else
/usr/bin/ssh "$@"
fi
Вы ищете управляющую последовательность символа (ов) стирания .
tput cup 5 10 ; tput ech 59
Не следует путать с символом удаления .
tput cup 5 10 ; tput dch 59
При стирании остаются пустые места. Удаление перемещает оставшуюся часть строки влево.
Для этого вы можете использовать sed, см.
эхо "строка" | sed -e '/ начало /, / конец /' | sed -e 's / pattern / replace / g'
Как уже отмечалось, ech
( удалить символы ) - это правильный путь, если он работает. Это входило в комплект поставки VT102, поэтому большинство терминалов, которые вы будете использовать, предоставляют эту функцию.
Для описаний терминалов из ncurses существует проблема с цветом: разработчик rxvt в 1995–1996 годах использовал другую интерпретацию идеи об очистке фоновых цветов и не (как это делают консоль Linux и xterm) не обрабатывал стирание то же, что и очистка . Таким образом, ech
очищается с использованием цвета по умолчанию, а ed
( erase display ) очищается с текущим цветом ANSI. По этой причине в описании терминала ncurses отсутствует ech
. Та же проблема относится ко всем программам, полученным из этого источника.
Дополнительная литература:
tput
с чашкой
и Возможности ech
: cursor_address cup cm move to row #1 columns #2 erase_chars ech ec erase #1 characters (P)