Для метода, который будет работать независимо от версии (и реализации оболочки, такой как ksh93, откуда он исходит, и mksh и zsh, которые также его поддерживают ), вы можете сохранить шаблон и замену в переменной:
pattern="'"
replacement="''"
printf '%s\n' "${line//$pattern/$replacement}"
Или
q="'"
printf '%s\n' "${line//$q/$q$q}"
(обратите внимание, что в zsh
$pattern
принимается как фиксированная строка. Если вы хотите, чтобы он воспринимался как подстановочный шаблон (, который здесь не применяется, поскольку $pattern
не содержит подстановочных знаков ), вам необходимо заменить $pattern
на $~pattern
. В других оболочках, если вы хотите, чтобы $pattern
воспринималось как фиксированная строка, вам нужно заключить ее в кавычки (${line//"$pattern"/$replacement}
).
Небезопасно опция:
На хосте, с которого вы входите, выполните
xhost +
или, только немного более безопасный
xhost <IP you want to log in to>
Это позволит подключаться с удаленного хоста.
Почему это небезопасно? Любая программа и пользователь с этого хоста (или любая программа/пользователь с любого хоста сxhost +
)смогут получить доступ к вашему экрану и прочитать все нажатия клавиш на машине, на которой вы выполняете xhost
.
Более безопасный вариант :
Добавьте ключ авторизации для вашего сервера X11 на удаленный компьютер:
На локальном компьютере перечислите необходимые «волшебные файлы cookie»:
# xauth list
hostname/unix:0 MIT-MAGIC-COOKIE-1 0123456789abcdef0123456789abcdef
На удаленной машине добавьте секрет в свой файл ~/.Xauthority
. Проще всего снова использовать xauth
:
# setenv DISPLAY <ORIGIN_IP>:0
# xauth add <ORIGIN_IP>:0 MIT-MAGIC-COOKIE-1 0123456789abcdef0123456789abcdef
Обратите внимание, что данные протокола X11 между этими машинами по-прежнему не зашифрованы и поэтому подвержены атакам.