Connect wlan0 to HE-tunnel IPv6 Debian

Простое решение состоит в том, чтобы поставить одинарную кавычку (') в начале и еще одну одинарную кавычку в конце и заменить все ' внутри имени файла последовательностью из 4 символов '\''. Все символы теряют свое особое значение внутри строки в одинарных кавычках, кроме самого ', который отмечает конец строки.Последовательность '\'' завершает литерал в одинарных кавычках, сразу же следует в одинарных кавычках и открывает новый литерал в одинарных кавычках. Таким образом, имя файла

This file's name has some weird characters!
Will you manage to escape them?

может быть заключено в кавычки следующим образом:

somecommand 'This file'\''s name has some weird characters!
Will you manage to escape them?'

Двойные кавычки имеют более сложные правила экранирования и не позволяют включать восклицательный знак ! если активирована подмена истории, то дальше их рассматривать не буду.

Альтернативным подходом является защита символов обратной косой чертой. Это работает для всех символов, кроме символов новой строки; для новой строки единственным решением является помещение ее в одинарные (или двойные) кавычки. Если вы хотите свести к минимуму количество обратных косых черт для представления пользователю имени в кавычках, вы можете ограничить его местами, где обратная косая черта необходима; однако, чем больше обратных слэшей вы опускаете, тем больше вы рискуете забыть тот, который необходим. Буквы, цифры и символы, отличные от ASCII, всегда допустимы¹. Цитируйте пробелы и знаки препинания, когда вы не уверены.

В типичной оболочке (ksh, bash или zsh) вам необходимо заключать в кавычки следующие символы по крайней мере в некоторых случаях.

  • Пробелы (пробел, табуляция, новая строка — помните, что новые строки нельзя заключать в кавычки с обратной косой чертой).
  • ! — расширение истории.
  • " — синтаксис оболочки.
  • # — начало комментария после пробела; подстановочные знаки zsh.
  • $ — синтаксис оболочки.
  • & — синтаксис оболочки .
  • ' — синтаксис оболочки.
  • ( — даже в середине слова: расширенные подстановочные знаки ksh (также доступны в bash и zsh); подстановочные знаки zsh.
  • ) (см. ()
  • * — подстановочный знак sh.
  • , — только внутри фигурной скобки.
  • ; — оболочка синтаксис.
  • < — синтаксис оболочки.
  • = — в zsh, когда стоит в начале имени файла (расширение имени файла с поиском в PATH).
  • > — оболочка синтаксис.
  • ? — подстановочный знак sh.
  • [ — подстановочный знак sh.
  • \ — синтаксис оболочки.
  • ] — вы можете оставить это без кавычек.
  • ^ — расширение истории; подстановочный знак zsh.
  • ` — синтаксис оболочки.
  • { — раскрытие фигурной скобки.
  • | — синтаксис оболочки.
  • } — необходимо экранировать в zsh, другие оболочки более снисходительны, когда нет подходящей открывающей скобки.
  • ~ — расширение домашнего каталога, когда он находится в начале имени файла; подстановочный знак зш; всегда безопасно, когда это последний символ.

Еще несколько символов могут иногда требовать специальной обработки:

  • - не являются специальными для оболочки, но когда они находятся в начале аргумента команды, они указывают на опцию. Его нельзя защитить кавычками, так как специальная обработка находится в команде, а не в оболочке. Чтобы защитить имя файла, начинающееся с -, вы можете поставить перед ним ./ — таким образом, это все тот же файл, но аргумент не начинается с - больше.
  • . сам по себе не является чем-то особенным, но файлы точек по умолчанию исключены из глобусов *.
  • : не является специальным для оболочки, но некоторые команды анализируют его специально, например. для указания удаленного файла (имя хоста:имя файла). Обратитесь к документации команды, чтобы узнать, как справиться с именами файлов, содержащими двоеточие.

¹ Если пользователь не настроил альтернативные символы расширения истории. Некоторые оболочки это позволяют. Это еще одна причина использовать одинарные кавычки, а не обратную косую черту.

1
11.01.2017, 19:25
1 ответ

Привет, спасибо, Йохан Майрин, ты был прав, но у меня все еще были проблемы с его работой. Я начал следовать этому руководству https://scottlinux.com/2014/04/28/debian-linux-home-router-with-ipv4-and-ipv6/ , это похоже на меня, но между интерфейсами eth0 и eth1 я подумал, что это может быть и eth0, и wlan0. Сначала я неправильно прочитал руководство и немного перепутал IP-адрес в radvd, но, наконец, дело сделано. В руководстве рекомендуется статический IP-адрес на eth1 или, в моем случае, wlan0 для меня автоматически работал нормально, пока я менял IP-адрес в radvd.

radvd.conf
prefix 2001:470:28:46e::/64

Теперь все в порядке, Йохан, если бы у меня был ваш адрес, я бы отправил вам торт :)

0
28.01.2020, 01:04

Теги

Похожие вопросы