Поиск строк

Многие поисковые термины принимают в качестве параметра строку и сравнивают её с одним или несколькими полями пакета. Строки могут вводится с двойными кавычками или без них («"»), поэтому «?name(scorch)» и «?name("scorch")» будут выполнять один и тот же поиск. Если вы ввели поисковую строку, используя двойные кавычки, вы можете добавить в неё символ двойных кавычек, помещая непосредственно перед ним две обратных косых черты («\») : например, «?description("\"easy\"")» будет соответствовать пакету, чьё описание содержит строку «"easy"».

Если вы введёте «голую» строку, т. е. строку, не заключённую в двойные кавычки, aptitude будет считать, что эта строка «заканчивается», когда будет обнаружена закрывающая скобка или запятая перед вторым аргументом поискового термина [14]. Для того, чтобы отменить специальное значение этих символов, поместите тильду («~») непосредственно перед ними. Например, «?description(etc))» является синтаксической ошибкой, так как первый символ «)» заканчивает ?description термин, а второй символ «)» не соответствует какому-либо символу «(». С другой стороны, «?description(etc~))» соответствует пакету, чьё описание содержит текст «etc)». Для использования сокращённой нотации терминов есть и другие причины; более подробную информацию см. в разделе «Сокращения для поисковых терминов».

Большинство текстовых поисков (имен пакетов, описаний и т. д.) выполняются с использованием нечувствительных к регистру регулярных выражений. Регулярное выражение соответствует полю, если любая часть поля соответствует этому выражению; например, «ogg[0-9]» будет соответствовать «libogg5», «ogg123» и «theogg4u». Некоторые символы имеют специальное значение внутри регулярных выражений [15] , поэтому если вы хотите, чтобы они использовались в поиске, вам необходимо экранировать их обратной косой чертой: например, чтобы найти «g++», вам следует использовать шаблон «g\+\+».

Символы «!» и «|» имеют специальные значения внутри поисковых шаблонов. Чтобы включить эти символы в строку, не заключенную в кавычки, вам необходимо поместить тильду («~») непосредственно перед ними. Например, чтобы выбрать пакеты, чье описание содержит либо «grand», либо «oblique», используйте шаблон «?description(grand~|oblique)». Тем не менее, в указанных случаях вам, вероятно, покажется более удобным использовать закавыченную строку: «?description("grand|oblique")».



[14] aptitude расценивает запятую как специальный символ только в том случае, если имеется второй аргумент, так (например) «?name(apt,itude)» осуществляет поиск строки «apt,itude» в полях Имя пакетов.

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

[15] Символы со специальным значением: «+», «-», «.», «(», «)», «|», «[», «]», «^», «$» и «?». Заметьте, что некоторые из них также являются метасимволами aptitude, поэтому если вы хотите ввести (например) символ «|», он должен быть экранирован: «?description(\~|)», этот запрос будет соответствовать тем пакетам, чье описание содержит символ вертикальной черты («|»).