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

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

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

 man gcc | grep \\. 

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

  • Можно ли использовать shebang для самого источника файла в текущей среде bash?
  • Как создать временный файл в сценарии оболочки?
  • Добавление даты в имя файла при отправке электронной почты
  • Как прочитать файл свойств в ассоциативный массив?
  • сценарий не работает, как ожидалось, когда запланировано как cronjob
  • В каких файлах init level / etc / profile или / etc / environment читаются?
  • подсчет нескольких шаблонов за один проход с помощью grep?
  • Как удалить все файлы, кроме имени файла (без расширения) из полного пути к файлу?
  • One Solution collect form web for “Почему я должен дважды уйти от «точки»?”

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

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

     man gcc | grep \\. 

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

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

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

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