Метасимволи Linux: все, що потрібно знати

Одна з найпотужніших функцій оболонки Linux Bash — її здатність працювати з файлами та ефективно перенаправляти їх введення та виведення. Для цього можна використовувати спеціальні символи — метасимволи. Вони надають командам оболонки особливого значення, відкриваючи вам виграшні комбінації Linux.

* Bash — покращена версія оболонки Bourne shell. У Linux її часто використовують як встановлену командну оболонку.

Для чого потрібні спеціальні символи

Якщо ви користуєтесь Linux, то знаєте про службові символи по типу “#” — коментаря. Метасимволи — не настільки відомі, але не менш корисні символи.

Вони допомагають під час виведення списку, видалення та копіювання файлів у Linux. При цьому функція кожного спеціального символу змінюється в залежності від команди, з якою ви його використовуєте. Зараз ми покажемо, як з їхньою допомогою з’єднувати та розширювати команди.

Щоб розібратися, як все працює, радимо відразу пробувати застосовувати метасимволи. Для цього створіть порожню теку у каталозі /tmp:

sudo mkdir /tmp/meta

Перейдіть до каталогу /tmp/meta за допомогою команди cd та створіть нові порожні файли, використовуючи touch

touch apple.txt cider.sh vinegar.php cat.txt lemon.txt juice.sh catfish.sh 

Все необхідне готове, тож переходимо до практики.

Метасимволи відповідності файлів

Допомагають звернутися до групи файлів або каталогу для їх перерахування, переміщення або інших дій.

Метасимвол * 

Знак підставлення, який відповідає нулю або більшим символам. Як його можна використовувати:

ls c*
Output:
catfish.sh cat.txt cider.sh

Такий формат запису знайде всі файли на літеру с, незалежно від кількості символів в імені файлу.

ls c*h
Output:
catfish.sh cider.sh

Так отримуємо файли, які починаються на літеру с і закінчуються h. 

ls *r*
Output:
cider.sh vinegar.php

Знаходимо всі файли, що містять літеру r в назві.

sudo rm *p*

Ця команда видаляє всі файли, в імені яких є літера р. Перевірити це можна за допомогою команди ls:

ls
Output:
catfish.sh cat.txt cider.sh juice.sh lemon.txt

Спеціальний знак ?

Це теж знак підставлення, що означає збіг нуля або одного попереднього символу:

ls a?*
Output:
apple.txt

ls c?t*
Output:
catfish.sh cat.txt

Друга команда знайде файли, що починаються на літеру с та з літерою t на третьому місці.

Метасимвол [ ]

Означає будь-який вказаний символ із перелічених. Записується у вигляді чисел, символів або літер у квадратних дужках та найчастіше розділених дефісом.

Для прикладу використовуємо параметр [av]* з командою ls, щоб отримати список всіх файлів, що починаються з a або v:

ls [av]*
Output:
apple.txt vinegar.sh

Тепер змінимо команду, щоб отримати файли, які закінчуються на літеру t :

ls [ac]*[t]
Output:
apple.txt catfish.txt cat.txt

Ще можна використовувати дефіс, щоб вказати діапазон: 

ls [a-j]*
Output:
apple.txt catfish.sh cat.txt cider.sh juice.sh

Метасимволи перенаправлення файлів

Щоб розібратися з перенаправленнями в Bash, важливо уточнити, що кожен процес Linux має свої дескриптори: стандартні введення (stdin/0), виведення (stdout/1) і помилку (stderr/2). Вони визначають джерело команди та вирішують, куди надсилати висновок та повідомлення про помилки.

Зазвичай оболонка Linux зчитує введення команди з клавіатури та записує виведення на екран. А метасимволи перенаправлення можуть змінювати потік введення-виведення контенту. Перенаправлення введення дозволяє команді зчитувати контент із файлу, а не з клавіатури. А перенаправлення виводу зберігає виведення команди у файл. Тобто такі спеціальні символи можуть перенаправляти контент у файл або з нього.

Три основні метасимволи перенаправлення:

1. < направляє вміст файлу в команду. Наприклад, висновок у наступних команд буде однаковим:

less .bashrc
less < .bashrc

2. > направляє виведення команди у файл. Команда нижче збереже виведення у файл lists.txt:

ls /etc > lists.txt 

3. >> додає виведення команди до вмісту файлу:

wc означає кількість слів, її можна використовувати, щоб побачити різницю між файлом до і після додавання виведення команди.

Метасимвол розширення { } 

Метасимвол {} дозволяє розширити каталоги, імена файлів чи інші аргументи командного рядка. Наприклад, ви можете зробити нову теку brace всередині /tmp і створити набір файлів за допомогою команди touch наступним чином:

sudo mkdir /tmp/brace; cd /tmp/brace
touch test{1,2,3,4,5} 

Тепер перевіримо чи створилися файли:

ls
Output:
test1 test2 test3 test4 test5   

Можна вказати кілька списків, щоб згенерувати імена на основі комбінацій елементів списку. Наприклад:

touch {apple,cider,vinegar}.{fruit,liquid,sour}
touch {a,b,c}.{1,2,3}

Так ми створимо в поточній теці файли:

створення файла в linux

Два набори фігурних дужок у першій команді пов’язують імена файлів у кожному наборі з іншим. Ще можна написати останню команду як touch {a..c}.{1..3}, щоб вказати діапазони а-с та 1-3. Це знадобиться, коли потрібно вказати багато значень.  

Крім створення файлів, фігурні дужки можна використовувати для видалення або копіювання файлів в інші місця.

Інші метасимволи Linux

Ось таблиця деяких метасимволів для підключення та розширення команд з описом та прикладами:

СимволОписПриклад
Робить виведення однієї команди введенням для іншоїcat /etc/passwd | grep root
;Дозволяє виконувати послідовні команди, одну за одноюcd /etc ; ls-la ; chmod +x /tmp/script.php
&Запускає процеси або команди у фоновому режиміfind / -perm -u=s -type f &
$Розгортає арифметичний вираз і передає його оболонціshell echo “total files in this directory are: $(ls | wc -l)”
2>Направляє стандартні повідомлення про помилку у файл /dev/nullyour_command 2>/dev/null
^Відповідає будь-якому шаблону, який починається з виразу, написаного після ^cd /etc/ssh ; ls | grep ^s
\Дозволяє екранувати метасимвол, тобто скасовувати його особливе значенняls | grep f \. refox
.Є кілька значень: може вказувати поточну позицію під час запуску таких команд, як cd, find чи sh; може бути знаком підстановки, що позначає один символ.. -тип f-name ‘*.mp3’
ps -ef | grep f..efox

Резюмуємо

Спеціальні символи надають командам особливого значення та допомагають оптимізувати роботу користувачів у продуктовому середовищі. Вміння ними користуватися — обов’язкова умова, якщо ви хочете прокачатись у Linux. Застосовуючи їх у своїй роботі, ви помітите, що вони не лише дають вам додаткові функції, але й заощаджують ваш час. 

Залишити відповідь

Дякуємо, що поділились