Метасимволы Linux и их значение
Метасимвол - это любой символ, имеющий особое значение, например карат (^), знак доллара ($) или звездочка (*). В Linux таких метасимволов довольно много, и их значения различаются в зависимости от того, какие Команда Linux или программу, которую вы используете.
Точка как метасимвол (.)
Полная остановка (.) указывает текущую позицию при выполнении таких команд, как CD, найти, или ш. В таких приложениях, как awk, grep, и sed, это подстановочный знак, обозначающий конкретное число любого символа.
Например, следующая команда находит все Файлы MP3 в текущей папке и ее подпапках.
найти. -type f -name '* .mp3'
Если вы запустите эту команду в текущем рабочем каталоге (pwd), вы увидите возвращенные результаты, предполагая, что вы храните файлы MP3 в музыкальной папке в своей домашней папке.
Теперь посмотрим на эту команду:
ps -ef | grep f..efox
Команда ps отображает список всех запущенных процессов на вашем компьютере. Команда grep берет строки ввода и ищет шаблон.
Команда ps -ef получает список запущенных процессов. Труба (
Если Firefox запущен, вы получите совпадение. Точно так же, если запущена программа под названием fonefox или freefox, они также возвращаются.
Если вам нужно найти только один символ, вместо использования метасимвола точки (.) Используйте? метасимвол. С помощью? метасимвол относится к любому одиночному символу в начале или в конце шаблона.
Звездочка как метасимвол (*)
Звездочка (*) - общеизвестный метасимвол. Это означает ноль или более любых символов при поиске шаблона. Например:
ls * .flac
В * .flac Часть команды возвращает совпадение для любого имени файла, заканчивающегося на .flac. Точно так же вы можете использовать звездочку с командой grep в последнем разделе следующим образом:
ps -ef | grep f * efox
Это немного отличается, потому что звездочка означает ноль или больше, поэтому, помимо поиска firefox, facefox и fonefox, он также находит flutefox, ferretfox и fefox.
Карат как метасимвол (^)
Карат (^) используется для обозначения начала строки или строки. Итак, как это используется?
Команда ls выводит список файлов в папке следующим образом:
ls -a
Если вы хотите перечислить файлы в папке, которые начинаются с определенной строки, например, gnome, для указания этой строки можно использовать carat. Например:
ls -a | grep ^ gnome
Здесь перечислены файлы, которые начинаются с gnome. Если вам нужны файлы, в имени которых есть gnome, используйте звездочку.
В приведенном выше примере команда ls возвращает список имен файлов и передает этот список команде grep, которая используется для сопоставления с образцом. Grep знает, что символ карата означает поиск всего, что начинается с символов, следующих за ним, и в данном случае это gnome.
Символ доллара как метасимвол ($)
Символ доллара ($) имеет несколько значений как метасимвол в Linux. Когда используется для сопоставления с образцами, это означает противоположность карата и обозначает любой образец, который заканчивается определенной строкой. Например:
ls | grep png $
Здесь перечислены все файлы, которые заканчиваются на png.
Символ доллара также используется для доступа к переменным среды в оболочке bash. Например:
#! /bin/bash
экспортная собака = Молли
эхо $ собака
Линия экспортная собака = Молли создает переменную среды с именем собака и устанавливает его значение Молли. Чтобы получить доступ к переменной среды, используйте символ $. С символом $ эхо $ собака заявление отображает Молли. Без него эхо собака В заявлении отображается слово собака.
Экранирование метасимволов (\\)
Иногда вы не хотите, чтобы метасимвол имел особое значение. Например, если файл называется f.refox а другой файл называется Fire Fox.
Теперь посмотрим на следующую команду:
ls | grep f.refox
Как вы думаете, что возвращается? Возвращаются и f.refox, и firefox, потому что оба соответствуют шаблону.
Чтобы вернуть только f.refox, избегайте точки, фактически означающей точку, как показано ниже:
ls | grep f \\. refox
Скобки как метасимвол ([])
Вы можете использовать скобки ([ ]) при поиске закономерностей. Скобки определяют конкретные буквы, которые нужно сопоставить в любом месте узора. Например:
ls | grep [abc]
Здесь перечислены все файлы, содержащие буквы a, b или c.
Вы можете использовать квадратные скобки в начале, конце или середине шаблона поиска.
Для поиска диапазона букв используйте символ дефиса (-). Например, ls [а-ч] * возвращает файлы, которые начинаются с любой буквы от a до h.
Метасимвол Accent Grave
В приведенных выше примерах метасимвол канала отправляет результаты одной команды (например, команды ls) другой команде (например, команде grep).
Альтернативный способ сделать это - использовать обратную кавычку, также известную как акцентная могила (`), чтобы вставить результаты одной команды в другую. Для этого сохраните результат одной команды в переменной. Например:
команда = `ls -lah`
echo $ command
Пример очень надуманный, и вы, вероятно, никогда не сделаете ничего подобного, но вы можете увидеть, как это работает. Обратный апостроф запускает команду и сохраняет результат. Это может быть полезно при написании сценариев, но менее гибко, чем использование конвейера для простых команд.
Общие метасимволы и их значения
Характер | Имея в виду |
. | Любой персонаж. |
* | Ноль или более символов. |
^ | Соответствует любой строке или строке, начинающейся с шаблона (например, ^ gnome). |
$ | Сопоставьте любую строку или строку, заканчивающуюся шаблоном (например, gnome $). |
\ | Экранирует следующий символ, чтобы удалить его особое значение. |
[] | Соответствует одному из списка или диапазона (например, ["abc", "def"] или [1..9]). |
+ | Соответствует одному или нескольким предыдущим (например, grep a +). |
? | Соответствует нулю или одному предыдущему. |