Вecho "\abc\$\\"
(например )входят два шага.
Во-первых, поскольку строковый аргумент для echo
заключен в двойные -кавычки, оболочка будет что-то делать с экранированными символами внутри.
В случае "\abc\$\\"
он преобразует его в \abc$\
перед передачей echo
. \a
останется без изменений, поскольку a
не является одним из «специальных» символов. Другие экранированные символы будут буквальными , что означает, что они больше не имеют особого значения в оболочке ($
не запускает раскрытие, обратная косая черта не экранирует следующий символ и т. д. )Обратите внимание, что $
в конце строки в двойных кавычках по-прежнему является "особым", так как могло бы ввести расширение, если бы строка не заканчивалась сразу после него. Две строки "a$"
и "a\$"
идентичны, так как $
в первой строке ни к чему не применяется.
Затем echo
может выполнить собственную интерпретацию этого строкового аргумента. Некоторые реализации echo
рассматривали бы \a
как означающее, например, "символ колокольчика".
Я также думаю, что здесь вы неправильно понимаете стандарт. Оценка обратной косой черты, за которой следует один из специальных символов, удалит обратную косую черту. Вы, кажется, думаете, что он должен оставаться неизменным и что, например. \$
следует оставить как \$
. Стандарт говорит напротив этого.
Ну, вы можете просто добавить шаг скачка (прыжок хоста ).
ssh -J user@server user@virtual-machine
Очевидно, что это не прямое подключение как таковое, но оно пропускает выполнение команды ssh на сервере.
Возможно ли прямое подключение и каким образом, зависит от устройства виртуальной машины. Например. если он напрямую виден в сети со своим IP. Типичные режимы подключения перечислены здесь (, не ограничиваясь VirtualBox ).