Почему я должен дважды уйти от «точки»?

Я знаю, что мы можем избежать специального символа, такого как *(){}$ с \ чтобы считаться литералами.
Например, \* или \$

Но в случае . Я должен сделать это дважды, как \\. в противном случае он считается особым. Пример:

 man gcc | grep \\. 

Почему это так?

  • У меня есть многострочная строка, которую мне нужно перебрать, но я не использую bash. Совет?
  • Когда «если» не нужно?
  • Условный оператор Баша и присвоение
  • Преобразование единиц CSV
  • Сценарий Bash не заменяет переменную как ожидалось
  • Печать количества файлов, имеющих одинаковое имя для каждого файла из каталога
  • Как выйти из скрипта в сеансе ssh?
  • Как запустить сценарий оболочки в качестве демон в Redhat?
  • One Solution collect form web for “Почему я должен дважды уйти от «точки»?”

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

    Давайте рассмотрим ваш пример:

     man gcc | grep \\. 

    Эта команда интерпретируется двумя программами, интерпретатором bash и grep . Первый побег приводит к тому, что bash знает \ буквально, поэтому второй – это пропуск для grep .

    Если вы уйдете только один раз, \. , bash будет знать, что эта точка буквальна и проходит . к grep . Когда grep увидит это . , он считает, что точка – это особый характер, а не буквальный .

    Если вы дважды bash , bash передаст шаблон \. к grep . Теперь grep знает, что это буквальная точка.

    Linux и Unix - лучшая ОС в мире.