Skip to main content

Метасимволы Linux и их значения

Урок 246: RegEx 1: Что такое регулярные выражения (Июнь 2026)

Урок 246: RegEx 1: Что такое регулярные выражения (Июнь 2026)
Anonim

Согласно Википедии, метасимволом является любой символ, который имеет особое значение, например, карат (^), знак доллара ($) или звездочку (*).

С точки зрения Linux существует множество этих метасимволов, и их значения различаются в зависимости от того, какая команда или программа вы используете.

Полная остановка как метасимвол (.)

Смиренная полная остановка используется для пожертвования текущей позиции при выполнении команд, таких как cd, find или sh, но в таких приложениях, как awk, grep и sed, которые используются для обозначения любого символа.

Например, следующая команда найдет все mp3-файлы в текущей папке и ниже.

находить . -name * .mp3

Если вы запустите эту команду в текущем рабочем каталоге (pwd), то вы, вероятно, получите возвращенные результаты, предполагая, что вы сохраняете свои mp3-файлы в музыкальной папке в своей домашней папке.

Теперь посмотрим на эту команду:

ps -ef | grep f..efox

Команда ps перечисляет все запущенные процессы на вашем компьютере. Команда grep берет строки ввода и ищет шаблон.

Поэтому команда ps -ef получает список запущенных процессов и дает ее grep, который ищет любую строку в списке с f..efox, где. может означать любой символ.

Если вы используете firefox, вы получите совпадение. Аналогично, если у вас есть программа под названием fonefox или freefox, они также будут возвращены.

Звездочка как метасимвол (*)

Звездочка - это более универсально известный метасимвол и используется при поиске шаблона 0 или более.

Например:

находить . -name * .mp3

* .Mp3 возвращает соответствие для любого имени файла, которое заканчивается на .mp3. Аналогично, я мог бы использовать звездочку с командой grep, как показано ниже:

ps -ef | grep F * efox

Стоит отметить, что это немного отличается, потому что звездочка означает ноль или больше, так же как поиск firefox, facefox и fonefox, он также может найти flutefox, ferretfox и даже просто fefox.

Карат как метасимвол (^)

Карат (^) используется для обозначения начала строки или строки. Итак, как он используется?

Команда ls используется для перечисления всех файлов в папке следующим образом:

Ls

Если вы хотите знать все файлы в папке, которая начинается с определенной строки, такой как «gnome», тогда карат может использоваться для указания этой строки.

Например:

ls | grep ^ gnome

Обратите внимание, что в этом списке перечислены файлы, начинающиеся с gnome. Если вы хотите, чтобы файлы, у которых есть гном в имени файла, где угодно, вы снова вернетесь к звездочке.

В приведенном выше примере ls возвращает список имен файлов и передает этот список в grep, который используется для сопоставления шаблонов. grep знает, что символ карата означает найти что-нибудь, что начинается с символов, которые приходят после него, и в этом случае это гном.

Символ доллара как метасимвол ($)

Символ доллара может иметь несколько значений как метасимвол в Linux.

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

Например:

ls | grep png $

В этом списке перечислены все файлы, которые заканчиваются на png.

Символ доллара также используется для доступа к переменным среды в оболочке bash.

Например:

export dog = mollyecho $ dog

Строка export dog = molly создает переменную окружения, называемую собакой, и устанавливает ее значение в molly. Для доступа к переменной среды используется символ $. С символом $ выражение echo $ dog отображает molly, но без него оператор echo dog просто отображает слово dog.

Удаление метасимволов

Иногда вы не хотите, чтобы метасимвол имел особое значение. Что делать, если у вас есть файл с именем f.refox и файл с именем firefox.

Теперь рассмотрим следующую команду:

ls | grep f.refox

Как вы думаете, что возвращается? И f.refox, и firefox возвращаются, потому что они оба соответствуют шаблону.

Чтобы возвращать только f.refox, вам нужно было бы избежать полной остановки, чтобы фактически означать полную остановку следующим образом:

ls | grep f . refox

Общие метасимволы и их значения

Список метасимволов Linux
символИмея в виду
.Любой персонаж
*Ноль или больше символов
^Сопоставьте любую строку или строку, начинающуюся с шаблона (i.e ^ gnome)
$Сопоставьте любую строку или строку, заканчивающуюся шаблоном (например, gnome $)
Убирает следующий символ, чтобы удалить его особое значение
Сопоставьте один из списка или диапазона (т. Е. "Abc", "def" или 1..9
+Сопоставьте один или несколько предыдущих (например, grep a +)
?Совпадение нуля или одного предыдущего