поместите эту строку в Вас .bashrc или .profile файл в ~ / Затем, это загружается каждый раз, когда Вы запускаете свою консольную сессию
Кавычки расширены оболочкой, они определяют что grep
видит.
С grep -E '\<H'
, символы между одинарными кавычками передаются буквально, таким образом, grep видит regex \<H
содержа привязку начала слова \<
.
С grep -E \<H
, символ обратной косой черты удаляет особое значение <
в оболочке, и grep
видит regex <H
. Вы видели бы соответствия для строки как <Hello>
.
С grep -E <H
, <
символ имел бы свое особое значение в оболочке как символ перенаправления, таким образом, grep
получил бы содержание названного файла H
на его стандартном входе.
С grep 'd$'
или grep d\$
, знак доллара заключается в кавычки так, он достигает grep
: regex d$
, соответствие a d
в конце строки.
С grep d$ test
, $
знак не сопровождается допустимым именем переменной или допустимой пунктуацией (${
, $(
). Когда это происходит, оболочка передает $
подпишитесь буквально, таким образом, grep
снова видит regex d$
. $
только расширен, когда это сопровождается допустимым именем переменной (даже если переменная является неопределенной — что имеет значение, то, что имя следует, как в $PATH
или $fioejsfoeij
или односимвольные переменные такой как $-
или $$
), или в конструкциях ${…}
, $(…)
, $((…))
(также $[…]
в ударе и zsh и большем количестве конструкций в zsh).
Полные правила для расширения оболочки слишком сложны для описания в сообщении или дюжине. На практике достаточно помнить обычные случаи:
\
(обратная косая черта) заключает следующий символ в кавычки, если это не новая строка, и обратная косая черта всегда разделяется;'…'
(одинарные кавычки) заключают каждый символ в кавычки кроме '
самостоятельно;"…"
(двойные кавычки) заключают каждый символ в кавычки кроме "$\`
, и \
в двойных кавычках заставляет следующий символ интерпретироваться буквально и только разделяется, если следующий символ был специален. \<
сначала оставлен оболочкой, и ее значение становится литералом <
символ. Таким образом, регулярное выражение передало grep
строка <H
, который не имеет особого значения.
И если Вам нужны глубокие знания того конкретного отношения, необходимо консультироваться с ответом Gilles.
"This and $that"
разворачивает переменную оболочкиthat
(да, это неявно в ответе, но это - ловушка для, не варьируются новички...) – vonbrand 01.03.2013, 02:51