Со старыми шрифтами X, `.. 'выглядела симметрично, как‛ ..'
Также учитывая, что латекс `.. 'генерирует правильные левый и правый сингл кавычки вроде '..'
Итак, `.. 'был взломом, и в 2012 году coreutils изменил на оболочку, похожую на кавычки' .. '
Однако теперь это был не полный синтаксис оболочки и генерировать поврежденный вывод, если присутствуют встроенные символы "\ r" и т. д.Также непоследовательно, в некоторых случаях не использовались кавычки, а иногда использовались кавычки Unicode «..» (которые используют кавычки, как определено для локали, и обслуживают экранирование этих управляющих символов).
Совсем недавно (2015 г.) патч набор был введен в coreutils, чтобы сделать это более согласованным, путем цитирования всех выходных имен файлов в формате совместимости с оболочкой, который также соответствующим образом экранирует управляющие символы и позволяет для упрощения копирования и вставки обратно в другие команды. В других элементах диагностики используется "полное кодирование Unicode", как упомянуто выше.
Вы можете просто передать его в grep -v 'alias'
, чтобы получить все строки, которые не содержат alias
.
Один из способов предотвратить совпадение регулярного выражения с самим собой — заключить один символ в класс символов:
alias mytodo='grep --recursive "TOD[O]: "'
В качестве альтернативы (шляпа -подсказка к Stéphane Chazelas ), вы можете сохранить псевдоним с дополнительными кавычками -в шаблоне:
alias mytodo='grep --recursive "TO''DO: "'
Тогда строка все равно не будет найдена, но псевдоним содержит исходный шаблон. Это полезно, когда вы хотите использовать, например. фиксированное соответствие строки -(grep -F
).