Урок за глобиране на Bash

Bash Globbing Tutorial



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

‘?’ се използва за съвпадение на всеки един символ. Можеш да използваш ‘?’ за няколко пъти за съвпадение на множество знаци.







Пример-1:



Да предположим, че искате да търсите в тези имена на текстови файлове, чиито имена са с дължина 4 знака, а разширението е .текст . Можете да приложите модел на глобулиране, като използвате „ ? “Четири пъти, за да се справите с тази задача.



Разберете списъка с всички файлове и папки в текущата директория.





$ls-на

Изпълнете следната команда за търсене на тези файлове, чиито имена са четири знака и са неизвестни.

$ ls -l ????. txt



Пример-2:

Да предположим, че искате да търсите в тези файлове с документи, чиито имена са дълги 8 знака, първите 4 знака са f, o, o и T и разширение е док . Изпълнете следната команда с шаблон за глобиране, за да търсите файловете.

$ls -накрак ????. doc

Пример-3:

Да предположим, че знаете, че името на файла е „Най -доброто“ и разширението е с 3 знака, но не знам разширението. Изпълнете следната команда, като използвате ‘? “, За да търсите във всички файлове с името„ тест “с разширение с дължина три знака.

$ls -нанай -добре. ???

Звездичка - (*)

‘*’ се използва за съвпадение на нула или повече знаци. Ако имате по -малко информация за търсене във всеки файл или информация, можете да използвате ‘*’ по модел на глобусиране.

Пример -1:

Да предположим, че искате да търсите във всички файлове на „Pl“ разширение. Изпълнете следната команда, като използвате ‘*’ да свърши тази задача.

$ls -на *.pl

Пример-2:

Да предположим, че знаете само началния знак на името на файла, което е 'да се' . Изпълнете следната команда, използвайки „*“, за да търсите във всички файлове от текущата директория, чиито имена започват 'да се' .

$ls -нада се*.*

Пример-3:

Можете да приложите „*“ в bash скрипт за различни цели, без да търсите файлове. Създайте bash файл с име „Check.sh“ със следния скрипт. Тук, когато потребителят въведе „ y “или„ Y “или„ да “или„ да “ тогава „Потвърдено“ ще се отпечата и кога типът ще въведе „N“ или „N“ или „не“ или „не“ тогава 'Непотвърдено' ще отпечата.

#!/bin/bash
изхвърлен „Искате ли да потвърдите?“
Прочетиотговор
случай $ отговор в
[Да]* ) изхвърлен „потвърдено“.;;
[Не]* ) изхвърлен 'Непотвърдено.';;
*) изхвърлен 'Опитай пак.';;
esac

Стартирайте скрипта.

$башcheck.sh

Квадратна скоба - ([])

‘[]’ се използва за съвпадение на знака от диапазона. Някои от най -често използваните декларации за обхват са споменати по -долу.

Всички главни букви се дефинират от обхвата като, [: горен:] или [A-Z].

Всички малки букви се дефинират от обхвата като, [: малки:] или [a-z].

Всички цифрови цифри се определят от обхвата като, [: цифра:] или [0-9].

Всички главни и малки букви се дефинират от обхвата като, [: alpha:] или [a-zA-z].

Всички главни букви, малки букви и цифри се определят от обхвата като, [: alnum:] или [a-zA-Z0-9]

Пример -1:

Изпълнете следната команда, за да търсите във всички файлове и папки, чието име съдържа стр или Какво или r или с .

$ls -на [p-s]*

Пример-2:

Изпълнете следната команда, за да търсите във всички файлове и папки, чието име започва с произволна цифра от 1 до 5.

$ls -на [1-5]*

Липсва му - (^)

Можеш да използваш ‘^’ с квадратна скоба за по -конкретно определяне на модела на глобусиране. ‘^’ може да се използва вътре или извън квадратна скоба. „^“ Се използва извън квадратната скоба за търсене на съдържанието на файла, което започва с даден диапазон от знаци. ‘^’ Се използва в квадратните скоби, за да покаже цялото съдържание на файла, като маркира редовете, започващи с даден диапазон от знаци. Можете да използвате различни типове шаблони за глобиране за търсене на конкретно съдържание от файл. 'захващане' командата се използва за търсене на съдържание в bash. Да предположим, че имате текстов файл с име „List.txt“ със следното съдържание. Тествайте следните примери за този файл.

Apple
4000
Банан
700
Оранжево
850
Круша
9000
jackdruit

Пример - 1:

Изпълнете следната команда, за да търсите тези редове от list.txt файл, който започва с P или Q или R .

$ grep '^[P-R]' list.txt

Пример - 2:

Изпълнете следната команда, за да маркирате тези редове от list.txt файл, който започва с A или B или C .

$ grep '[^A-C]' list.txt

Възклицателен знак - (!)

Можеш да използваш '!' вътре в модела на диапазона. Работи по същия начин като използването на символа ‘^’ извън модела на диапазона. Някои примери за използване '!' знак са дадени по -долу.

Пример - 1:

Изпълнете следната команда, за да покажете тези редове от list.txt файл, който започва с „P“ или Q или R .

$ grep [! P-R] list.txt

Пример - 2:

Изпълнете следната команда, за да покажете тези редове от list.txt файл, който започва с произволна цифра от 4 до 8 .

$ grep [! 4-8] list.txt

Знак за долар - ($)

„$“ се използва за определяне на крайния знак. Ако знаете, че искате да търсите информация въз основа на последния знак, можете да използвате „$“ по модел на глобусиране.

Пример - 1:

Изпълнете следната команда, за да търсите тези редове от list.txt файл, който завършва с 'да се' .

$ grep a $ list.txt

Пример - 2:

Изпълнете следната команда, за да търсите тези редове от list.txt файл, който завършва с номера петдесет .

$ grep 50 $ list.txt

Къдрава скоба - ({})

„{}“ може да се използва за съвпадение на имена на файлове с повече от един модел на глобулиране. Всеки модел е разделен с „,“ в къдрава скоба без никакви интервали. Някои примери са дадени по -долу.

Пример - 1:

Изпълнете следната команда, за да търсите тези файлове, чиито имена са с дължина 5 знака и разширението е 'Ш' или последните два знака на файловете са „St“ и разширението е 'текст' .

$ ls -l {?????. sh,*st.txt}

Пример - 2:

Изпълнете следната команда, за да изтриете всички файлове, чиито разширения са „Doc“ или „docx“ .

$rm {*.doc,*.docx}

Тръба - (|)

Знакът '|' се използва и за прилагане на повече от едно условие към шаблона за глобулиране. Всеки модел е разделен със символа „|“ в командата.

Пример - 1:

Изпълнете следната команда, за да търсите онези имена на файлове, които започват с символ „а“ и имат разширение „bash“ или „sh“.

$lsда се*+(.bash|.sh)

Пример - 2:

Създайте bash файл с име „Menu.bash“ и добавете следния скрипт. Ако типът потребител 1 или S след това ще се отпечата Търсене на текст . Ако типът потребител 2 или R. след това ще се отпечата Замяна на текст . Ако типът потребител 3 или D. след това ще се отпечата Изтриване на текст . Той ще отпечата Опитай пак за всеки друг вход.

#!/bin/bash
изхвърлен „Изберете всяка опция от менюто:“
Прочетиотговор
случай $ отговор в
1 |С) изхвърлен „Търсене на текст“;;
2 |R) изхвърлен „Замяна на текст“;;
3 |д) изхвърлен „Изтриване на текст“;;
*) изхвърлен 'Опитай пак.';;
esac

Стартирайте скрипта.

$башmenu.bash

ЗАКЛЮЧЕНИЕ

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

За повече информация вижте това видео: