Най-мощната функция на обвивката на Linux Bash е нейната способност да заобикаля файлове и да пренасочва ефективно техния вход и изход. Linux използва специални знаци или символи, известни като метасимволи, които добавят специално значение към командата на обвивката по отношение на търсенето на файлове и връзката на командите.

Метазнаците са полезни при изброяване, премахване и копиране на файлове в Linux. Въпреки това, функцията на всеки метазнак се различава в зависимост от командата, с която го използвате.

Тази статия предоставя задълбочено ръководство за различни типове метасимволи в Linux. И накрая, ние обясняваме как тези специални знаци помагат при свързването и разширяването на командите.

Обвивката на Linux ви позволява да запазвате натискания на клавиши, докато пишете команди, като използвате метасимволи между файлове или имена на директории. Тези знаци ви помагат да се обърнете към група файлове или директория, за да изброите, преместите или извършите други дейности.

Това са някои метасимволи за съвпадение на файлове, които обвивката на Linux може да интерпретира:

instagram viewer
  • * (звездичка): Съвпада с единично или многократно срещане на символ
  • ? (Въпросителен знак): Съответства на единичен знак или поява на шаблон
  • [ ] (Квадратни скоби): Съвпада с всеки номер, символ или азбука, разделени с тире, посочени в квадратните скоби

Идеален начин за практикуване на метазнаци в Linux е чрез създаване на нова празна папка вътре /tmp директория.

sudo mkdir /tmp/meta

Сега отидете в /tmp/meta използвайки директория командата cd и създайте нови празни файлове с помощта на докосване, както следва:

докоснете apple.txt cider.sh vinegar.php cat.txt lemon.txt juice.sh catfish.sh 

Използвайте следните команди, за да тествате "*" метазнак и покажете изходите:

е с*
Изход:
catfish.sh cat.txt cider.sh
е с*ч
Изход:
сом.ш сайдер.ш
е *г*
Изход:
cider.sh vinegar.php
sudo rm *p*

Гореспоменатата команда ще изтрие всички файлове, съдържащи буквата "p" в името си. Можете да проверите промяната с помощта на командата ls, както следва:

ls
Изход:
catfish.sh cat.txt cider.sh juice.sh lemon.txt

Ето някои примери за "?" метазнак за съвпадение на шаблон:

Дали?*
Изход:
apple.txt
е c? т*
Изход:
catfish.sh cat.txt

Последната команда съответства на всеки файл, който започва с ° С и има т като трета буква (cat.txt, catfish.sh и др.).

Сега използвайте [ср.]* опция с командата ls за изброяване на всички файлове, които започват с едно от двете а или v, както следва:

ls [av]*
Изход:
apple.txt ocat.sh

Можете да промените горната команда, за да изброява само файлове, които завършват с буквата т:

ls [ac]*[t]
Изход:
apple.txt catfish.txt cat.txt

По същия начин можете да използвате буквите, разделени с тире, за да дефинирате диапазони и списъчни файлове, както следва:

ls [a-j]*
Изход:
apple.txt catfish.sh cat.txt cider.sh juice.sh

За по-добро разбиране на пренасочването в Bash, всеки процес в Linux има файлови дескриптори, известни като стандартен вход (stdin/0), стандартен изход (stdout/1) и стандартна грешка (stderr/2). Те определят произхода на командния вход и решават къде да изпратят изхода и съобщенията за грешка.

Метазнаците за пренасочване ви помагат да модифицирате тези действия чрез пренасочване на I/O потока на съдържанието. Обикновено обвивката на Linux чете въведената команда от клавиатурата и записва изхода на екрана. Пренасочването на входа позволява на командата да чете съдържанието от файл вместо от клавиатура, докато изходното пренасочване запазва изхода на командата във файл.

С други думи, метазнаците за пренасочване на файлове на Linux ви позволяват да пренасочвате съдържанието към (>) и от (<) файловете. Трите основни метазнака за пренасочване са:

  1. <: Насочва съдържанието на файла към командата. Например, командата извежда за по-малко .bashrc е същото като по-малко < .bashrc.
  2. >: Насочва изхода на командата към файла. Командата ls /etc > lists.txt записва изхода във файла lists.txt.
  3. >>: Добавя изхода на командата към съдържанието на файла.

wc означава брой думи и можете да го използвате, за да покажете разликата между файла преди и след добавянето му към изхода.

Свързани: Разбиране на стандартния I/O в Linux

Метазнакът за разширяване на скоби ви позволява да разширявате знаците в директории, имена на файлове или други аргументи на командния ред. Например, можете да създадете нова директория скоба вътре в /tmp папка и създайте набор от файлове с помощта на командата за докосване, както следва:

sudo mkdir /tmp/скоба; cd /tmp/скоба
тест за докосване{1,2,3,4,5}

Сега можете да проверите дали touch е създал файловете или не, като използвате командата ls.

ls
Изход:
тест1 тест2 тест3 тест4 тест5

Можете да посочите множество списъци, за да генерирате имена на файлове въз основа на комбинациите от елементите в списъка. Например:

докоснете {ябълка, сайдер, оцет}.{плод, течност, кисел}
докоснете {a, b, c}.{1,2,3}

Последната команда ще създаде следните файлове в текущата директория:

Първата команда използва два набора скоби за свързване на имена на файлове във всеки набор с другия. Можете също да напишете последната команда като докоснете {a..c}.{1..3} за да посочите диапазона между a и c и 1 и 3.

В допълнение към създаването на файлове, можете също да използвате разширение на скоби, за да премахнете или копирате файлове на други места.

Ето таблица с някои задължителни метасимволи за свързване и разширяване на команди с техните имена, описание и примери за практикуване:

име Описание Пример
тръба (|) Свързва изхода на командата като вход към другата команда. котка /etc/passwd | grep корен
точка и запетая (;) Позволява изпълнение на последователни команди, една след друга. cd / и т.н.; ls -la; chmod +x /tmp/script.php
амперсанд (&) Изпълнява процесите или командите във фонов режим. find / -perm -u=s -type f &
долар ($) Разширява аритметичния израз и го предава на обвивката echo "общите файлове в тази директория са: $(ls | wc -l)"
Нулева пренасочване (2>) Насочва стандартните съобщения за грешка към файла /dev/null вашата_команда 2>/dev/null
Circumflex (^) Съвпада с всеки шаблон, който започва с израза, последван от ^ cd /etc/ssh; ls | grep ^s

Метасимволите на Linux са известни още като заместващи знаци, които добавят специално значение към командите и контролират тяхното поведение. Метасимволите оптимизират работата на потребителя в продуктивна среда, докато работят около файлове/директории и свързват/разширяват командите на обвивката на Linux.

Освен това метазнаците са и градивните елементи на регулярните изрази. Освен това научаването на метазнаците и тяхното използване е важно умение, което трябва да притежавате, ако искате да станете про-Linux потребител.

Ръководство за начинаещи за регулярни изрази с Python

Искате ли да ускорите работния си процес на Python с няколко прости команди? Регулярните изрази са ваш приятел.

Прочетете Следващото

Дялтуителектронна поща
Свързани теми
  • Linux
  • Linux Elementary
  • Linux Bash Shell
За автора
Румайса Ниази (Публикувани 5 статии)

Румайса е писател на свободна практика в MUO. Тя е носила много шапки, от математик до ентусиаст по информационна сигурност, и сега работи като SOC анализатор. Нейните интереси включват четене и писане за нови технологии, Linux дистрибуции и всичко около информационната сигурност.

Още от Rumaisa Niazi

Абонирайте се за нашия бюлетин

Присъединете се към нашия бюлетин за технически съвети, ревюта, безплатни електронни книги и ексклузивни оферти!

Щракнете тук, за да се абонирате