Метасимвол — это любой символ, имеющий особое значение, например, карат (^), знак доллара ($) или звездочка (*). В Linux имеется достаточное количество этих метасимволов, и их значения различаются в зависимости от того, какую команду Linux вы используете.
Полная Остановка как Метасимвол (.)
Полный Стоп ( . ) Указывает текущую позицию при запуске таких команд, как cd , find или sh. В таких приложениях, как awk , grep и sed , это подстановочный знак, который обозначает конкретное число любого символа.
Например, следующая команда находит все файлы MP3 в текущей папке и ее подпапках.
находить . -тип f -name '* .mp3'
Если вы выполните эту команду в текущем рабочем каталоге (pwd), вы увидите возвращенные результаты, при условии, что вы храните файлы MP3 в музыкальной папке в вашей домашней папке.
Теперь посмотрите на эту команду:
ps -ef | grep f..efox
Команда ps выводит список всех запущенных процессов на вашем компьютере. Команда grep принимает строки ввода и ищет шаблон.
Команда ps -ef возвращает список запущенных процессов. Метасимвол pipe ( | ) отправляет этот список в команду grep, которая ищет любую строку в списке, содержащую f..efox , где точки относятся к двум любым символам.
Если Firefox запущен, вы получите совпадение. Аналогично, если запущена программа с именем fonefox или freefox, они также возвращаются.
Если вам нужно искать только один символ, вместо метасимвола с точкой (.), Используйте? метасимволом. Используя ? Метасимвол относится к любому отдельному символу либо в начале, либо в конце шаблона.
Звездочка как метасимвол (*)
Звездочка ( * ) является общеизвестным метасимволом. Это означает ноль или более любого символа при поиске шаблона. Например:
ls * .flac
Часть * .flac команды возвращает совпадение для любого имени файла, заканчивающегося на .flac. Аналогично, вы можете использовать звездочку с командой grep в последнем разделе следующим образом:
ps -ef | grep f * efox
Это немного отличается, потому что звездочка означает ноль или более, поэтому, помимо поиска Firefox, Facefox и Fonefox, она также находит Flutefox, Ferretfox и Fefox.
Карат как метасимвол (^)
Карат ( ^ ) используется для обозначения начала строки или строки. Так как это используется?
Команда ls выводит список файлов в папке следующим образом:
ls -a
Если вы хотите перечислить файлы в папке, которая начинается с определенной строки, например, gnome, карат можно использовать для указания этой строки. Например:
ls -a | grep ^ gnome
Здесь перечислены файлы, которые начинаются с gnome. Если вы хотите, чтобы файлы с gnome были где-то в имени файла, используйте звездочку.
В приведенном выше примере команда ls возвращает список имен файлов и передает этот список команде grep, которая используется для сопоставления с образцом. Grep знает, что символ карат означает найти все, что начинается с символов, следующих за ним, и в данном случае это гном.
Символ доллара как метасимвол ($)
Символ доллара ( $ ) имеет несколько значений в качестве метасимвола в Linux. Когда используется для сопоставления с образцами, это означает противоположность карат и обозначает любой образец, который заканчивается определенной строкой. Например:
ls | grep png $
В этом списке перечислены все файлы, заканчивающиеся на png.
Символ доллара также используется для доступа к переменным среды в оболочке bash. Например:
#! / bin / bash
export dog = molly
echo $ dog
Строка export dog = molly создает переменную среды с именем dog и устанавливает ее значение molly . Чтобы получить доступ к переменной окружения, используйте символ $. С символом $ оператор echo $ dog отображает Молли. Без этого в выражении echo dog отображается слово dog.
Спасающиеся метасимволы (\\)
Иногда вы не хотите, чтобы метасимвол имел особое значение. Например, если файл называется f.refox, а другой файл называется firefox .
Теперь посмотрите на следующую команду:
ls | grep f.refox
Как вы думаете, что возвращается? И f.refox, и firefox возвращаются, потому что оба соответствуют шаблону.
Чтобы вернуть только f.refox, экранируйте точку полной остановки, чтобы фактически означать точку полной остановки следующим образом:
ls | grep f \\. refox
Скобки как метасимвол ([])
Вы можете использовать скобки ( [] ) при поиске шаблонов. Квадратные скобки указывают конкретные буквы для соответствия в любом месте шаблона. Например:
ls | grep [abc]
В этом списке перечислены все файлы, содержащие буквы a, b или c.
Вы можете использовать квадратные скобки в начале, конце или в середине шаблона поиска.
Для поиска диапазона букв используйте дефис (-). Например, ls [ah] * возвращает файлы, которые начинаются с любой буквы от a до h.
Метасимвол Акцента Могила
В приведенных выше примерах метасимвол канала отправляет результаты одной команды (например, команды ls) другой команде (например, команде grep).
Альтернативный способ сделать это — использовать обратную кавычку, также известную как accent grave ( ` ), чтобы вставить результаты одной команды в другую команду. Для этого сохраните результат одной команды в переменной. Например:
command = `ls -lah`
echo $ command
Пример очень надуманный, и вы, вероятно, никогда не сделаете ничего подобного, но вы можете увидеть, как это работает. Символ обратного удара запускает команду и сохраняет результат. Это может быть полезно в сценариях, но оно менее гибкое, чем использование канала для простых команд.
Общие метасимволы и их значения
символ | Смысл |
, | Любой персонаж. |
* | Ноль или более символов. |
^ | Совпадение с любой строкой или строкой, которая начинается с шаблона (например, ^ gnome). |
$ | Сопоставьте любую строку или строку, которая заканчивается шаблоном (например, gnome $). |
\ | Избегает следующего символа, чтобы удалить его особое значение |
[] | Соответствует одному из списка или диапазона (например, [«abc», «def»] или [1..9]). |
+ | Совпадение с одним или несколькими предыдущими (например, grep +). |
? | Совпадение ноль или один предыдущий. |