Правилно коришћење наредби Финд и Греп у Линуку

Већина почетничких корисника Уник-система, посебно Линук, нису упознати са основним операторима командне линије који се користе у овом ОС-у. Погледајмо ближе функције и употребу оператора финд и греп.

Коришћење команди Финд и Греп у Линуку.

ФИНД

Линук финд команда је услужни програм командне линије за прелазак хијерархије датотека. Може се користити за претраживање датотека и директорија и обављање накнадних операција с њима. Подржава претраживање према датотеци, мапи, имену, датуму креирања, датуму промјене, власнику и дозволама. Користећи -екец, могу се извршити друге УНИКС команде за пронађене датотеке или фасцикле. Синтакса:

$ финд [где започети претрагу] [израз одређује шта пронаћи] [-оптионс] [шта пронаћи]

Опције:

  • -екец - тражена датотека која испуњава горе наведене критеријуме и враћа 0 као излазно стање за успјешно извршавање команди;
  • -ок - ради исто као и -екец, осим што се прво тражи од корисника;
  • -инум Н - претраживање са бројем "Н";
  • -линкс Н - претраживање са линковима "Н";
  • -наме демо - тражи датотеке наведене у "демо";
  • -невер филе - тражи датотеке које су модификоване / креиране након “филе”;
  • -перм октални - претражи ако је резолуција октална;
  • -принт - показати пут до пронађених докумената користећи друге критеријуме;
  • - празна - потрага за празним документима и директоријима;
  • -сизе + Н / Н - блокови претраге "Н"; "Н" и "ц" се могу користити за мерење величине у знаковима; “+ Н” означава већу величину “Н” блокова, а “Н” значи мању величину “Н” блокова;
  • -усер наме - тражи документе који припадају корисничком имену или идентификатору "наме";
  • (екпр) - Труе ако је "екпр" тачно; Користи се за групирање критерија у комбинацији са ОР или АНД.

Греп

Наредба греп се користи за претраживање датотека. Функција означава “глобално штампање регуларних израза” и једна је од најмоћнијих и најчешће коришћених команди у Линуку. Наредба претражује једну или више улазних датотека које одговарају наведеном узорку и сваку одговарајућу линију пише у стандардни излаз. Ако ниједна датотека није наведена, наредба се чита са стандардног улаза, што је обично излаз друге наредбе. У овом чланку ћемо вам показати како да унесете команду, са практичним примерима и детаљним објашњењима најчешћих ГНУ греп опција.

Синтакса команде

Пре него што почнемо да користимо команду, почнимо са прегледом основне синтаксе. Изрази корисности имају следећи облик:

[ОПЦИЈЕ] ПАТТЕРН [ФИЛЕ ...]

Ставке у угластим заградама нису обавезне.

  • ОПЦИЈЕ - нула или више избора. Тим пружа бројне опције које контролишу његово понашање.
  • ПАТТЕРН - Узорак претраге.
  • ФИЛЕ - нула или више имена улазних датотека.

Како уписати наредбу за претраживање датотека

Главна сврха команде је да тражи текст у датотеци. На пример, да бисте приказали из датотеке / етц / пассвд која садржи линију басх, можете користити следећу команду:

$ греп басх / етц / пассвд

Излаз треба да изгледа овако:

роот 0: 0: роот: / роот: / бин / басх

домаин1000: 1000: домаин: / хоме / домаин: / бин / басх

Ако стринг садржи размаке, потребно је да их ставите у једноструке или двоструке наводнике:

$ "Гноме Дисплаи Манагер" / етц / пассвд

Инвертирај (ек)

Да бисте приказали линије које не одговарају узорку, унесите параметар –в (или –инверт-матцх). На пример, да бисте приказали датотеку која не садржи нологин из датотеке / етц / пассвд, можете да унесете следећу команду:

$ -в нологин / етц / пассвд

Излаз:

роот 0: 0: роот: / роот: / бин / басх

цолорд 124: 124 :: / вар / либ / цолорд: / бин / фалсе

гит 994: 994: гит даемон усер: /: / уср / бин / гит-схелл

линукизе 1000: 1000: линукизе: / хоме / линукизе: / бин / басх

Како користити наредбу за претраживање у излазу

Уместо тога, ако наведете улазне датотеке, можете преусмерити излаз друге команде, а затим приказати само линије које одговарају наведеном узорку. На пример, да бисте сазнали који процеси се извршавају на вашем систему као корисник ввв података, можете користити следећу команду:

$ пс -еф | ввв-дата

Излаз:

ввв-дата 18247 12675 4 16:00? 00:00:00 пхп-фпм: поол ввв

роот 18272 17714 0 16:00 птс / 0 00:00:00 - боја = ауто - искључи - дир = .бзр - искључи - дир = ЦВС - искључи - дир = .гит - искључи - дир =. = .свн ввв-дата

ввв-дата 31147 12770 0 Оцт22? 00:05:51 нгинк: радни процес

ввв-дата 31148 12770 0 Оцт22? 00:00:00 процес нгинк: цацхе манагер

Такође можете комбиновати више канала у тим. Као што се може видети на излазу изнад, ту је и линија која садржи процес. Ако не желите да се ова линија прикаже, пошаљите излаз другој инстанци, као што је приказано испод.

$ пс -еф | ввв-дата | греп -в греп

Излаз:

ввв-дата 18247 12675 4 16:00? 00:00:00 пхп-фпм: поол ввв

роот 18272 17714 0 16:00 птс / 0 00:00:00 - боја = ауто - искључи - дир = .бзр - искључи - дир = ЦВС - искључи - дир = .гит - искључи - дир =. = .свн ввв-дата

ввв-дата 31147 12770 0 Оцт22? 00:05:51 нгинк: радни процес

ввв-дата 31148 12770 0 Оцт22? 00:00:00 процес нгинк: цацхе манагер

Рецурсиве сеарцх

Да бисте рекурзивно претражили узорак, унесите –р (или –рецурсиве) опцију. Ово ће вам омогућити да претражујете све датотеке у наведеном директоријуму, прескачући симболичке везе које се рекурзивно дешавају. Да бисте прошли све симболичке везе, користите опцију –р (или –дереференце-рецурсиве). У следећем примеру тражимо домаин.цом у свим датотекама у директоријуму / етц:

$ -р домаин.цом / етц

Команда ће одштампати одговарајућа поља са префиксом за путању до датотеке.

/етц/хостс:127.0.0.1 ноде2.домаин.цом /етц/нгинк/ситес-аваилабле/домаин.цом: сервер_наме домаин.цом ввв.домаин.цом;

Ако умјесто –р користите опцију –Р, наредба ће слиједити све симболичке везе:

$ -Р домаин.цом / етц

Обратите пажњу на задње поље за излаз. Ово није одштампано у горњем примеру, јер су датотеке у Нгинк директоријуму са омогућеним локацијама симболичне везе ка конфигурационим датотекама унутар директоријума доступних за сајтове.

Излаз:

/етц/хостс:127.0.0.1 ноде2.домаин.цом

/етц/нгинк/ситес-аваилабле/домаин.цом: сервер_наме домаин.цом ввв.домаин.цом;

/етц/нгинк/ситес-енаблед/домаин.цом: сервер_наме домаин.цом ввв.домаин.цом;

Прикажи само име датотеке

Да бисте потиснули подразумевани излаз и одштампали само имена датотека које садрже упарени узорак, можете да унесете опцију –л (или —филес-витх-матцхес). На пример, да бисте претражили све датотеке које завршавају у .цонф у тренутном радном именику и да бисте штампали само имена датотека који садрже тип домена.цом, откуцајте:

$ -Л домаин.цом * .цонф

Излаз ће изгледати овако:

тмук.цонф

хапроки.цонф

Опција -л се обично користи заједно са рекурзивном -Р опцијом:

$ -Рл домаин.цом / тмп

Цасе инсенситивити

По подразумеваној вредности, команда је осетљива на велика и мала слова, што значи да се велика и мала слова третирају као различита. Да бисте игнорисали случај приликом претраживања, унесите опцију –и (или –игноре-цасе). На пример, ако тражите Зебру без икакве опције, следећа команда неће приказати ниједан излаз, тј. постоје подударања.

$ Зебра / уср / схаре / речи

Али ако извршите претрагу без обзира на величину слова, користите опцију –и, она ће одговарати и великим и малим словима:

$ греп -и Зебра / уср / схаре / речи

Ознака "Зебра" одговара "Зебра", "ЗЕбрА" или било којој другој комбинацији великих и малих слова.

Излаз:

зебра

зебра'с

зебрас

Тачно подударање

Када претражује, гну ће такође штампати гну, у који се убацују веће речи, као што су цигнус или магнум.

$ гну / уср / схаре / речи

Излаз:

цигнус

гну

интеррегнум

лгну9д

лигнум

магнум

магнусон

спхагнум

вингнут

Да бисте вратили само оне изразе у којима је специфицирано поље цела реч (не затворена речима), можете да користите опцију –в (или —ворд-регекп).

ВАЖНО. Карактери речи укључују алфанумеричке знакове (аз, АЗ и 0-9) и подвлаке (_). Сви остали знакови се третирају као невербални знакови.

Ако покренете исту команду као горе, укључујући и -в опцију, команда ће вратити само оне које укључују гну као посебну реч.

$ греп -в гну / уср / схаре / речи

Излаз: гну

Прикажи бројеве

Да бисте приказали број редова који садрже узорак, користите параметар –н (или –лине-нумбер). Коришћењем ове опције ће се штампати подударања са стандардним излазом са префиксом броја у којем је пронађен. На пример, да бисте из датотеке / етц / сервицес која садржи басх префикс са одговарајућим бројем, приказали следећу команду:

$ греп -н 10000 / етц / сервицес

Излаз испод показује да су утакмице на 10423 и 10424.

Излаз:

10423: ндмп 10, 000 / тцп

10424: ндмп 10000 / удп

Бројање

Да бисте одштампали број одговарајућих линија на стандардни излаз, користите параметар –ц (или –цоунт). У доле наведеном примјеру бројимо број рачуна који имају схелл / уср / бин / зсх.

$ греп -ц '/ уср / бин / зсх' / етц / пассвд

Излаз: 4

Неколико редова (узорака)

Оператор ОР може комбиновати два или више узорака претраге. По подразумеваној вредности, команда интерпретира образац као главни регуларни израз, у коме мета-знакови губе своје посебно значење, а њихове верзије са обрнутом цртом треба да се користе. У доњем примеру, претражујемо све појаве фаталних, грешака и критичних речи у датотеци дневника грешака Нгинк:

$ греп 'фатал \ _ грешка \ _ |

Ако користите опцију проширеног регуларног израза –Е (или —ектендед-регекп), израз не треба да се скида, као што је приказано испод:

$ греп -Е 'фатална | грешка | критична' /вар/лог/нгинк/еррор.лог

Регуларни израз

ГНУ Греп има два сета функција регуларног израза - Басиц и Ектендед. Подразумевано, функција интерпретира образац као основни регуларни израз, да би се пребацила на проширене регуларне изразе, потребно је да користите опцију –Е. Када користите регуларне изразе у главном моду, сви остали знакови, осим мета-знакова, су заправо регуларни изрази који одговарају једни другима. Испод је листа најчешће коришћених мета-знакова:

  • Користите знак ^ (знак карата) да се подудара са изразом на почетку реда. У следећем примеру, ^ кенгур ће се поклапати само ако се појави на самом почетку: $ греп "^ кангароо" филе.ткт
  • Користите симбол $ (долар) који одговара изразу на крају. У следећем примеру, кенгур $ ће се слагати само ако се нађе на самом крају: греп "кангароо $" филе.ткт
  • Користите симбол. (тачка) да би се подударао са било којим знаком. На пример, да би се повезало све што почиње са кан од два знака и завршава са роо, можете користити следећи образац: $ греп "кан..роо" филе.ткт
  • Користите [] (заграде) да бисте ускладили било који појединачни знак у заградама. На пример, пронађите оне које садрже акценат или "нагласак", можете користити следећи образац: $ греп "ацце [нп] т" филе.ткт

Да бисте избегли посебно значење наредног знака, користите знак (бацксласх).

Проширени регуларни изрази

Да би образац протумачио као проширени регуларни израз, користите параметар –Е (или –ектендед-регекп). Проширени регуларни изрази укључују све основне мета-знакове, као и додатне мета-знакове за креирање сложенијих и моћнијих образаца претраживања. У наставку су наведени неки примјери:

  • Подесите и издвојите све адресе е-поште из ове датотеке: $ греп -Е -о "[А-За-з0-9 ._% + -] [А-За-з0-9 .-] + [А-За-з] {2.6} б 'филе.ткт
  • Мапирајте и издвојите све важеће ИП адресе из овог фајла: $ греп -Е -о '(25 [0-5] | 2 [0-4] [0-9] | [01]? [0-9] [0] (25 [0-5] | 2 [0-4] [0-9] | [01]? [0-9] [0-9]?) \ Т 5] | 2 [0-4] [0-9] | [01]? [0-9] [0-9]?) (25 [0-5] | 2 [0-4] [0-9] 9] | [01]? [0-9] [0-9]?) Датотека.ткт

Опција -о се користи за штампање само утакмица.

Штампајте пре одбројавања

Да бисте одштампали одређени број линија пре подударања, користите параметар –Б (или —пре-контекст). На пример, да бисте приказали 5 линија почетног контекста пре подударања, можете користити следећу команду: $ греп -А 5 роот / етц / пассвд

Штампајте после претраге

Да бисте одштампали одређени број редова након подударања, користите параметар –А (или – после-контекста). На пример, да бисте приказали 5 линија коначног контекста након подударања низова, можете користити следећу команду: $ греп -Б 5 роот / етц / пассвд

То је све неопходно за пуну употребу информација о командама. Ако већ користите Линук и можете дати било какве савјете почетницима, подијелите коментаре према овом чланку.