Grep ir raskite „Linux“ operatorių taisykles
- 4194
- 703
- Cecil Kreiger
Iš pradžių „Unix“/„Linux“ operacinės sistemos neturėjo grafinės sąsajos, nes jos buvo sutelktos į serverio naudojimą. Šiandien jie nėra prastesni už „Windows“, todėl vartotojai, naudojantys šią OS, retai žino sintaksę ir pagrindinių „Linux“ komandų tikslą. Tuo tarpu tai yra labai galingas įrankis, leidžiantis greitai atlikti operacijas, kurios, naudojant pagrindinius OS įrankius, yra problemiškas arba neįmanomas. Šiandien jūs susitiksite su „Find“ ir „Grep“ operatoriais, kurie yra pagrindiniai visų „Linux“ paskirstymo failų sistemai.
Find ir Grep operatorių paskyrimas
„Find“ komanda „Linux“ yra komandinės eilutės operatorius, dirbantis su failais, apeinančiais esamą hierarchiją. Tai leidžia ieškoti failų, naudojant daugybę filtrų, taip pat atlikti tam tikrus veiksmus, o ne failus, po jų sėkmingos paieškos. Tarp failų paieškos kriterijų yra beveik visi galimi atributai, nuo sukūrimo dienos iki skiriamoji geba.
„Grep“ komanda „Linux“ taip pat nurodo paieškos variklius, tačiau failų viduje. Žodinis komandos vertimas yra „visuotinis įprastų išraiškų spausdinimas“, tačiau antspaudas čia reiškia, kad pagal numatytuosius nustatymus prietaise yra darbo rezultatų išvada, kuri paprastai yra monitorius. Turėdamas didžiulį potencialą, operatorius naudojamas gana dažnai ir leidžia ieškoti viename ar daugiau failų pagal nurodytus fragmentus (šablonai). Kadangi „Linux“ terminija žymiai skiriasi nuo tokių „Windows“, daugelis vartotojų turi didelių sunkumų, naudodami šias komandas. Mes bandysime pašalinti šį trūkumą.
Grep ir raskite sintaksę
Pradėkime nuo radimo operatoriaus. Failų paieškos komandos sintaksė atrodo taip:
Raskite [kur ieškoti] [parametrai] [-Optinis] [Veiksmas]
Kai kurie naudoja parametrus:
- -Gylis: paieška dabartiniame aplanke ir subkatalistuose;
- -Versija: atsineškite komandos versiją;
- -Spausdinti: rodyti visus failų pavadinimus („Linux“ jie gali būti savavališkai dideli);
- -F tipas: paieškos išimtinai failai;
- -D tipas - tik paieškos katalogas (aplankai).
Galimų parinkčių sąrašas (nurodytas per brūkšnį):
- Vardas: failo paieška pagal pavadinimą;
- Vartotojas: ieškokite failo savininko pavadinimu;
- Perm: pagal atributą „prieigos režimas“;
- mtime: iki paskutinio failo pakeitimo (redagavimo) laiko;
- Grupė: pagal grupę;
- „Atime“: iki paskutinio failo atidarymo datos;
- Naujesnis: failo, kurio data yra daugiau nei šablone nurodyta direktyva, paieška;
- Dydis: pagal failo dydį baituose;
- Nouser: Ieškokite failų, kuriuose nėra įvesto atributo „Savininkas“.
Grep sintaksė:
Grep [parinkčių] šablonas [kur ieškoti]
Parinktys turėtų būti suprantamos kaip papildomi paaiškinantys parametrai, pavyzdžiui, atvirkštinio režimo naudojimas arba tam tikro eilučių skaičiaus paieška.
Šablonas nurodo, ko reikia ieškoti naudojant tiesiogiai nurodytą eilutę arba įprastą išraišką.
Galimybė naudoti įprastas išraiškas gali žymiai išplėsti paieškos galimybes. Standartinės išvados nuoroda gali būti naudinga, jei užduotis yra filtruoti žurnaluose įrašytas klaidas arba ieškoti PID proceso PS komandos rezultatuose, kurie gali būti kelių puslapių.
Apsvarstykite dažniausius GRAS parametrus:
- -B: Prieš išleisdami gautą eilutę, rodykite bloko numerį;
- -C: Būtina apskaičiuoti norimo fragmento įrašų skaičių;
- -I: Ieškokite registruojant registrą;
- -N: Išleiskite eilutės numerį į standartinį išvesties įrenginį, kuriame buvo rastas norimas fragmentas ar šablonas;
- - L: Išleidimo metu turėtų būti tik failų pavadinimai su rastu paieškos fragmentu;
- -S: ignoruoti klaidų išvestį;
- -W: Ieškokite fragmento, apsupto iš abiejų pusių, tarpų;
- -V: apversta paieška, tai yra, visų linijų, kuriose nėra nurodyto fragmento, ekranas;
- -E: Parametras rodo, kad toliau seka savo sintaksė, kuri turi savo sintaksę;
- -An: norimo fragmento ir ankstesnių N linijų išvada;
- -BN: tas pats, tačiau eilutėms einant po šabloną.
Dabar prasminga pereiti nuo teorinės dalies į praktiką.3
Komunalinių paslaugų naudojimo pavyzdžiai
Jei žinote, kas yra kombinatorinė, tada turėtų būti pateiktas tikrasis galimų paieškos komandų derinių skaičius. Mes apsiribosime tik naudingiausiais pavyzdžiais, kurie gali būti jums naudingi darbo metu.
Ieškokite teksto failuose
Turėkime administratoriaus teises ir turime užduotį rasti konkretų vartotoją didžiuliame slaptažodžio faile. Mums reikės gana paprastos komandos, nurodančios failo paskelbimo kelią:
Grep nameUSer /etc /passwd
Jei paieškos rezultatas yra teigiamas, gausime maždaug tokio tipo liniją:
„NameUSer“: X: 1021: 1021: nameUSer ,,,:/HOME/vartotojas:/bin/bash
Jei jums reikia ieškoti teksto fragmento neatsižvelgiant į registro registrą, komanda atrodys taip:
GRAS -i "nameUSer" /etc /passwd
Tokiu atveju bus rasta „NameUSer“ vartotojas ir jo „NameSake“ „NameUSer“, taip pat visi kiti įmanomi deriniai.
Kelių eilučių išvada
Paimkime visas klaidas iš lango „Shell Xorg“ žurnalo.žurnalas. Užduoti. Nusprendžiama, jei mes verčiame komandą parodyti keletą eilučių, naudodami eilutę „pp“ kaip šabloną:
GRAS -A5 "pp"/var/log/xorg.0.žurnalas
Gauname eilutę, kurioje yra šablonas ir 5 eilutės po jos.
GRAS -C3 "pp"/var/log/xorg.0.žurnalas
Eilutės išvestis su teksto fragmentu ir trimis eilutėmis prieš ir po.
Reguliarių išraiškų naudojimas grepe
Tai yra vienas iš galingiausių „Linux“ įrankių, kurie žymiai išplečia galimybę suformuoti paieškos šabloną. Reguliarios išraiškos turi savo sintaksę, gana sudėtinga. Mes nesigilinsime į tai, apsiribodami RV naudojimo pavyzdžiu. Kaip jau žinote, norėdami nurodyti, kad toliau naudojama reguliarioji išraiška, naudojamas parametras -e.
Leiskite mums pranešimų faile.2 Rugsėjį turime sugauti visas eilutes:
Grep "^rugsėjo 09"
Rezultatas bus kažkas panašaus:
SEP 09 01:11:45 GS124 NTPD [2243]: Laikas iš naujo +0.197579 s
SEP 09 01:19:10 GS124 NTPD [2243]: Laikas iš naujo +0.203484 s
Norėdami ieškoti šablono, esančio juostos linijos gale, naudojamas „$“ simbolis:
Grep "terminas.$ "Pranešimai
Rezultatas:
Birželio 17 d.
Rugsėjo 11 d. 06:30:54 „Cloneme“ branduolys: žurnalo demono terminas.
Ir čia yra įprastos išraiškos naudojimo pavyzdys, leidžiantis ieškoti eilučių, kuriose yra visi skaičiai, išskyrus nulį:
Grep "[1-9]"/var/log/xorg.1.žurnalas
Rekursinės paieškos naudojimas grepe
Jei esate susipažinęs su terminu „rekursija“, tada „Linux“ ši technika naudojama, visų pirma, norint ieškoti kelių failų, esančių kataloge ir jo subkataluose, fragmento paieškai. Parinktis -R nurodys rekursijos buvimą. Leiskite mums ieškoti fragmento „pavadinimuMain“.Org “failuose, esančiuose aplanko /etc /Apache1 subkataluose:
GRAS -R "NUODRODOS.Org "/etc/apache1/
Rezultatas gali būti kažkas panašaus:
/etc/apache1/vhosts.D/ NUSTATYMAS.Org
Jei failo pavadinimas nereikalingas, mes naudojame -h: h:
Grep -h -r "pavadintasMain.Org "/etc/apache1/
Ieškokite žodžių
Standartinis QWE fragmento paieška pasibaigs išleidus visus žodžius, kuriuose rastas šis fragmentas: KBQWE, QWE123, AAFRQWE32. Norėdami apriboti paiešką tik su nurodytu fragmentu, turite naudoti parametrą -w:
GRAS -W „QWE“, kur rasti
Ieškokite dviejų ar daugiau žodžių
Apsunkinkite užduotį: turime rasti visas eilutes, kuriose randami du žodžiai. Komanda bus tokia:
GRAS -W "Word01 | Word02" Kur_ RASTI
Eilučių skaičius
Jei reikia apskaičiuoti. Kiek kartų norimas fragmentas yra faile, mes naudojame dizainą su -c parametru:
GRAS -C "'TEKSTAS" Kur_ RASTI
Parametras -n padeda išsiaiškinti, kurioje linijoje rastas norimas šablonas:
GRAS -N "NUSER" /etc /Passwd
Apversta paieška naudojant grepą
Kartais užduotis paieškoti naudojant grepą pagal failų turinį yra ne paties įrašo, bet eilučių, kuriose šio fragmento nėra. Parinktis -V mums padės:
GRAS -V „TXT“, kur randa
Failo pavadinimo išvestis
Leiskite rasti visus nurodytame kataloge esančius failus, kuriuose yra norimas šablonas. Tai galima padaryti naudojant -l parametrą. Taigi, visa failų išvesties komanda, kurioje yra eilutė „antrinė“, /ETC aplanke, atrodys taip:
Grep -l „antrinis“ /ir tt
Spalvų išvestis naudojant grepą
Likimas su kita spalva yra puikus būdas vizualizuoti norimą įrašą, kuris žymiai sumažina akių apkrovą, jei operacija dažnai atliekama. Pasirodo, GRAS turi pasirinkimą šiam paieškos rezultatų išvedimui:
Greporas -spalvotas „antrinis“ /kt
Mes apžvelgiame „Find Utility“ naudojimo „Linux“ pavyzdžių pavyzdžius.
Ieškokite visų failų
Norėdami atsiimti failų, esančių dabartiniame kataloge, sąrašą, komandą naudojame tokiu formatu:
Rasti .
Jei jums reikia parodyti visą failų pavadinimą, mes naudojame komandą
Rasti . -Spausdinti
Failo išvestis tam tikrame kataloge
Norėdami ieškoti failų aplanke, kurį apibrėžė vartotojas, mes naudojame komandą
Rasti ./tt
Bet kaip galite rasti failus, kuriuose yra nurodytas fragmentas dabartiniame kataloge:
Rasti . -VARDAS "*.Gif "
Jei paieška turi būti atliekama neatsižvelgiant į registrą, komandą reikia pakeisti:
Nekreipkite dėmesio į registrą ieškant pagal pavadinimą:
Rasti . -Manyje "*.Gif "
Apribojant paieškos gylį
Kita gana tipiška užduotis yra ieškoti failų tam tikrame aplanke pagal nurodytą pavadinimą:
Rasti . -maxdepth01 1 -name "*.Html "
Apversti šabloną
Mes jau apsvarstėme komandos analogą ieškoti linijų, kuriose nėra nurodyto fragmento. Lygiai taip pat galite padaryti su failais, kurie neatitinka nurodyto šablono:
Rasti . -ne -NAME „Vartotojas*“
Ieškokite pagal kelis kriterijus
Pateikiame komandinės eilutės pavyzdį, naudodami „Find Utility“ paieškai dviem kriterijais, naudodamiesi ne (pašalinimo) operatoriumi:
Rasti . -Vardas „Vartotojas“ -not -name “*.Html "
Tokiu atveju failai, kurių pavadinimą sudaro vartotojo fragmentas, tačiau kurie turi plėtinį, nebus rasti. Vietoj išimties operatoriaus galite naudoti loginį „/“ arba „::
Raskite -NAME "*.js "-o -name"*.SQL "
Tokiu atveju gausime išsamų failų sąrašą su abiem plėtiniais, esančiais dabartiniame kataloge.
Ieškokite keliuose kataloguose
Jei mums reikia rasti failus dviejuose kataloguose, tiesiog nurodykite iš spragos:
Raskite -tipo f ./test01 ./test02 -name "*.SQL "
Ieškokite paslėptų failų
„Linux“, kaip ir „Windows“, yra paslėptų failų, kurie, naudojant komandą „Find“, nebus rodomi be specialaus simbolio. Šis simbolis yra „Tilda“, o direktyva turės tokią išvaizdą:
Raskite ~ -name ".*"
Ieškokite failų „Linux“ pagal leidimus
Kartais reikia filtruoti tam tikros teisių kaukės katalogą. Pvz., Jei mums reikia rasti failus su atributu 0661, mes naudojame komandą:
Rasti . -Perm 0661
Užduotis filtruoti failus su atributu „Tik skaitymui“ išspręsta taip:
Rasti /etc /user -erm /u = r
Bet kaip atrodys vykdomų failų ETC kataloge ieškoma:
Raskite ir tt -perm /a = x
Ieškokite failų pagal grupes/vartotojus
Administratorius dažnai turi susidurti su užduotimi ieškoti failų, kurie yra konkretaus vartotojo ir (arba) grupės nuosavybė. Ieškokite vartotojo:
Rasti . -Vartotojo „Slavko“
Vartotojų grupėms naudojamas kitas parametras:
Raskite /var -Group Devs
Ieškokite iki paskutinės pakeitimo datos
Matomas failo datos „Linux OS“ formatas yra būtent jo modifikavimo data (tas pats principas naudojamas „Windows“). Norėdami suformuoti sąrašą pagal datą, naudojama „mtime“ parinktis. Tarkime, kad prieš du mėnesius turime rasti failus, pakeistus:
Raskite /namuose -mtime 60
Tarp failo atributų yra jo paskutinio atradimo data (nepadarant pakeitimų). Tokius failus rodo ši komanda:
Raskite /namuose -ATIME 60
Taip pat galite nustatyti laiko intervalą. Norėdami ieškoti failų, modifikuotų prieš keturis - du mėnesius, mes naudojame direktyvą:
Raskite /HOME -MTime +60 -MTime -120
Bet kaip rasti šviežiai pakeistų failų (prieš dvi valandas):
Raskite /namuose -cmin 120
Ieškokite failų pagal dydį
Įtariama, kad kažkas naudoja diską filmams? Mes ieškome failų 1 dydžio.4 GB:
Raskite / -SIZE 1400M
Arba naudokite diapazoną:
Raskite / -dydis +1400m -2800m
Ieškokite tuščių failų/katalogų
Taip, nenustebkite. Užduotis atkurti užsakymą žiniasklaidoje yra būdinga ne tik „Android OS“. „Linux“ sprendžiama naudojant tokią direktyvą:
Rasti /var -tipo f -Empty
Veiksmų su rastais failais pavyzdys
„Linux“ komanda gali rekursyviai atlikti tam tikrus veiksmus su tais failais, paieška, kurios jūs vykdote. Norėdami vykdyti failo komandas, turite naudoti vykdymo parametrą. Taigi, Direktyva, kaip parodyti informaciją apie visus failus, naudojančius LS komandą, atrodys taip:
Rasti . -Exec ls -l \;
Bet kaip jūs galite ištrinti laikinus failus su nurodyta kauke kataloge /namuose /temp:
Rasti /tmp -tipo f -name "*.html ”-exec rm -f \;
Žinoma, pradedantiesiems, naudojant komandinę eilutę su daugybe parinkčių. Ir kaip išspręstumėte čia aprašytas problemas „Windows“? Tai tas pats. Šiuo aspektu „Linux“ aiškiai į priekį.
- « Kaip valdyti kompiuterį naudojant balso komandas
- E -knygos (knygų skaitytuvo) pasirinkimas skaitymui »